如何防止向用户显示任何异常? 如果发生任何错误,我可以想象只是将用户重定向到特定页面。
特别是我想阻止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)
答案 0 :(得分:4)
基本上,您可以为MyFaces配置添加异常处理程序。
您需要提供工厂方法然后提供实现。您还需要重新设置错误页面。
https://cwiki.apache.org/MYFACES/handling-server-errors.html
答案 1 :(得分:1)
为什么不在web.xml
中定义自定义错误页面?您可以在:
<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
}