2013-12-22 49 views
1

Java中有CheckedUnchecked exceptions在struts中声明/处理的异常xml

由于我是Struts2的新手,所以在处理checked exception时我有一个愚蠢的疑问。我们编写try catch block来处理checked exceptions。因此,我们可以在catch blockreturn view中写回归声明,显示Exception/Error

如果我抛出checked exception这是struts.xml文件中声明,结果是重定向到Error/Exception页?

这两种都是正确的检查异常?

+0

完全取决于手中的应用程序 –

回答

1

应该捕获应用程序级别的异常。如果您抛出应用程序级别异常并且未捕获该异常,则可以通过exception拦截器捕获该异常,如果它配置为该操作。请注意,异常拦截器位于defaultStack的底部,它允许不仅在动作中捕获异常,而且在整个拦截器中捕获异常。如果你配置了这个拦截器来映射异常,它应该处理并返回结果,它也应该被配置为全局结果,然后你的异常将被捕获并返回结果。如果你没有,Web容器将处理这个异常。正确的方法是捕获异常并返回错误结果,但如果你不能这样做,那么你应该配置异常拦截器。请注意,代码中发生的struts容器异常不会由异常拦截器处理。在这种情况下,您应该捕获该异常并将该操作的状态设置为错误,之后您可以在操作执行中首先检查该状态,以返回错误结果或抛出异常,该异常可以被代码中的异常拦截器捕获你不能返回错误结果。有关exception configuration的更多信息,可以在文档中找到。

1

答案完全取决于手中的应用要求。

例如,我编写了一个API,因此对于所有例外情况,都必须返回相同的页面。我的代码如下:

<global-results> 
      <result name="errHandler" type="chain"> 
       <param name="actionName">errorProcessor</param> 
       <param name="namespace">/</param> 
      </result> 
     </global-results> 
     <global-exception-mappings> 
      <exception-mapping exception="java.lang.Throwable" result="errHandler" /> 
     </global-exception-mappings>