Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

The code for this tutorial, exception_handling, is available for checkout at https://svngithub.com/apache.org/repos/asf/struts/sandbox/trunk/struts2examplesstruts-examples.

Introduction

In this tutorial we'll explore how to enable the Struts 2 framework to handle any uncaught exceptions generated by a web application. Struts 2 provides robust exception handling, including the ability to automatically log any uncaught exceptions and redirect the user to a error web page.

...

Code Block
xml
1struts.xml Global Exception Handling
xml

  
   <global-results>
        <result name="securityerror">/securityerror.jsp</result>
  	<result name="error">/error.jsp</result>
   </global-results>

   <global-exception-mappings>
	<exception-mapping exception="org.apache.struts.register.exceptions.SecurityBreachException" result="securityerror" />
	 <exception-mapping exception="java.lang.Exception" result="error" />
   </global-exception-mappings>
  

...

Code Block
xml
1struts.xml Action Specific Exception Mapping
xml


   <action name="actionspecificexception" class="org.apache.struts.register.action.Register" method="throwSecurityException">
     <exception-mapping exception="org.apache.struts.register.exceptions.SecurityBreachException" 
          result="login" />
      <result>/register.jsp</result>
      <result name="login">/login.jsp</result>
   </action>

...

Code Block
xml
1struts.xml Enable Exception Logging
xml


<interceptors>
  <interceptor-stack name="appDefaultStack">
    <interceptor-ref name="defaultStack">
     <param name="exception.logEnabled">true</param>
     <param name="exception.logLevel">ERROR</param>
    </interceptor-ref>
 </interceptor-stack>
</interceptors>

<default-interceptor-ref name="appDefaultStack" />

...

Code Block
xml
1error.jsp
xml


   <h4>The application has malfunctioned.</h4>

   <p>  Please contact technical support with the following information:</p> 

   <h4>Exception Name: <s:property value="exception" /> </h4>

   <h4>Exception Details: <s:property value="exceptionStack" /></h4> 

...