[ https://issues.apache.org/jira/browse/WW-4433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14247890#comment-14247890 ]
Lukasz Lenart edited comment on WW-4433 at 12/16/14 7:31 AM: ------------------------------------------------------------- Now when I'm checking the flow I see the problem but it wasn't in {{UnknownHandler}}'s default implementation - method must return null to allow other {{UnknownHandlers}} be invoked ;-) The problem is in {{DefaultActionInvocation}} which should have re-thrown the original exception if after examining all the {{UnknownHandlers}} the result is still null. {code:java} // throw the original exception as UnknownHandlers weren't able to handle invocation as well if (methodResult == null) { throw e; } {code} was (Author: lukaszlenart): Now when I'm checking the flow I see the problem but it wasn't in {{UnknownHandler}}'s default implementation - method must return null to allow other {{UnknownHandler}}s be invoked ;-) The problem is in {{DefaultActionInvocation}} which should have re-thrown the original exception if after examining all the {{UnknownHandler}}s the result is still null. {code:java} // throw the original exception as UnknownHandlers weren't able to handle invocation as well if (methodResult == null) { throw e; } {code} > ConventionUnknownHandler change breaks exception handling in interceptors. > -------------------------------------------------------------------------- > > Key: WW-4433 > URL: https://issues.apache.org/jira/browse/WW-4433 > Project: Struts 2 > Issue Type: Bug > Components: Core Interceptors, Documentation, Plugin - Convention > Affects Versions: 2.3.20 > Reporter: Joseph Wolschon > Priority: Minor > Fix For: 2.3.x > > > Struts 2.3.20 appears to have caused a regression that prevents exceptions > thrown from convention-plugin actions from reaching > ExceptionMappingInterceptor. This breaks exception handling when using the > convention-plugin. > To Reproduce: > * Generate a project struts2-archetype-convention archetype using 2.3.20 > * Throw exception in the action. With 2.3.20, a blank page is shown. > * Change to 2.3.16.3 and you will get the standard struts2 error page. > The breaking change appears to have been made in WW-4331. This causes error > interceptor code to break (showing a blank page when exceptions are thrown) > as DefaultActionInvocation does not catch an exception from the default > UnknownHandler implementation execution, which would previously re-throw the > original exception back up for the interceptors to catch. > Workaround: > We've created our own UnknownHandler implementation that just throws a new > NoSuchMethodException, allowing DefaultActionInvocation to re-throw the > original exception so that our error interceptor can again catch it. -- This message was sent by Atlassian JIRA (v6.3.4#6332)