防止向用户显示任何异常?

时间:2012-08-19 13:54:41

标签: java jsf exception java-ee

如何防止向用户显示任何异常? 如果发生任何错误,我可以想象只是将用户重定向到特定页面。

特别是我想阻止HTTP状态500视图异常,如下所示:

javax.faces.application.ViewExpiredException: /index.xhtmlNo saved view state could be found for the view identifier: /index.xhtml
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:132)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)

4 个答案:

答案 0 :(得分:4)

基本上,您可以为MyFaces配置添加异常处理程序。

您需要提供工厂方法然后提供实现。您还需要重新设置错误页面。

https://cwiki.apache.org/MYFACES/handling-server-errors.html

答案 1 :(得分:1)

为什么不在web.xml中定义自定义错误页面?您可以在:

中指定HTTP错误代码
<error-page>
    <error-code>500</error-code>
    <location>/myerror.jsp</location>
</error-page>

...或Java异常类:

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/myerror.jsp</location>
</error-page>

此解决方案的优点是不需要任何额外的实现 - 除了错误页面本身。

答案 2 :(得分:0)

在catch块中删除 printStackTrace()方法...并编写重定向代码

<强>例如

try{

        // Your code

     }catch(Exception ex){

       // Redirection Code

     }

答案 3 :(得分:-3)

同意@Kumar Vivek Mitra,但我认为你可以在finally块中添加重定向

 try{

    // Your code

 }catch(Exception ex){

   // syserr

 }finally{
      //redirect
 }