I did some testing locally, and it looks to me like exceptions should be propagated properly. Are you sure that the exception is not handled somewhere else? From your logs, it appears that "error" is returned somewhere along the chain.
Nils-H On Wed, Apr 16, 2008 at 12:46 AM, Parker Grimes <[EMAIL PROTECTED]> wrote: > I am trying to implement a custom exception mapping interceptor to be used > in my struts2 portlet. I implemented my own ExceptionMappingInterceptor > class that is similar to > com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor, the only > difference is that I send an email with the exception report to the > application administrators. I have used this same interceptor successfully > in a regular struts2 application. > > The problem I am having is that it appears that the action is being called > and the exception caught by some other class before it gets to my > interceptor even though my interceptor is declared first in my stack. Since > my custom interceptor is first in my stack shouldn't it be the first thing > to catch an exception begin thrown from my action? > > *My interceptor looks like this in struts.xml:* > <interceptors> > <interceptor name="customException" > class="edu.suu.struts2.interceptor.ExceptionMappingInterceptor"/> > <interceptor-stack name="myStack"> > <interceptor-ref name="customException"/> > <interceptor-ref name="portletDefaultStack"/> > </interceptor-stack> > </interceptors> > <default-interceptor-ref name="myStack"/> > > * > Here is my debug logging:* > DEBUG [com.opensymphony.xwork2.DefaultActionInvocation] - Executing action > method = optIn > DEBUG [edu.suu.googleapps.portlet.OptInAction] - optIn() > ---exception is thrown here--- > DEBUG [org.apache.struts2.portlet.result.PortletResult] - Executing result > in Event phase > DEBUG [org.apache.struts2.portlet.result.PortletResult] - Setting event > render parameter: /WEB-INF/jsp/error.jsp > DEBUG [edu.suu.struts2.interceptor.ExceptionMappingInterceptor] - result = > error > DEBUG [edu.suu.struts2.interceptor.ExceptionMappingInterceptor] - No > exceptions caught > DEBUG [org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher] - Leaving > processAction > DEBUG [org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher] - Entering > render > DEBUG [org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher] - > serviceAction > DEBUG [org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher] - Creating > action proxy for name = renderDirect, namespace = > DEBUG [com.opensymphony.xwork2.DefaultActionProxy] - Creating an > DefaultActionProxy for namespace and action name renderDirect > DEBUG [org.apache.struts2.portlet.interceptor.PortletStateInterceptor] - > Restoring value stack from event phase > DEBUG [org.apache.struts2.portlet.interceptor.PortletStateInterceptor] - > Restored stack > DEBUG [com.opensymphony.xwork2.interceptor.I18nInterceptor] - intercept > '/renderDirect' { > DEBUG [com.opensymphony.xwork2.interceptor.I18nInterceptor] - > requested_locale=null > * > The interceptor looks like this:* > public String intercept(ActionInvocation invocation) throws Exception { > HttpServletRequest request = ServletActionContext.getRequest(); > String result = null; > try { > logger.debug("Invoking action, looking for exceptions."); > result = invocation.invoke(); > logger.debug("result = " + result); > logger.debug("No exceptions caught"); > } catch (Exception ex) { > logger.debug("Exceptions caught"); > ex.printStackTrace(); > ...... > } > return result; > } > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]