JSF2异常处理

时间:2011-12-12 18:48:20

标签: jsf exception-handling jsf-2

在JSF2 webapp中处理“未经检查”的异常的最佳方法是什么?

目前,我让它们流到servlet容器,然后我(通过web.xml文件)重定向到显示友好消息和异常信息的jsp错误页面。

使用“自定义异常处理程序”处理它们会更好吗(就像Ed Burns在“JSF 2.0 - 完整参考”一书中所说的那样)。

在这两种情况下(“web.xml”或“异常处理程序”):我是否必须重定向到jsp页面而不是facelet页面? (因为异常可能是由jsf问题本身引起的,并且可能导致循环)。或者我可以重定向到facelet页面吗?重定向到jsp页面的缺点是必须配置jsf应用程序以接纳jsp和facelets(只有facelet页面会更“干净”)。

最后,另一个问题:“自定义异常处理程序”也处理“已检查”异常?目前,我在托管bean中处理它们(捕获它们并在应用程序页面中显示facesmessage)。

1 个答案:

答案 0 :(得分:6)

  

在JSF2 webapp中处理“未经检查”的异常的最佳方法是什么?

这完全取决于功能要求。未经检查的异常通常表示您的webapp中存在错误和配置问题。它们通常不应该被捕获,而只是冒泡进入容器。它们通常不是最终用户的错,而只是开发人员或者服务器的错误。


  

目前,我让它们流到servlet容器,然后我(通过web.xml文件)重定向到显示友好消息和异常信息的jsp错误页面。

     

使用“自定义异常处理程序”处理它们会更好(就像Ed Burns在“JSF 2.0 - 完整参考”一书中所说的那样)。

如果您希望对异步(ajax,XMLHttp)请求的异常进行更细粒度的控制,则自定义异常处理程序特别有用,因为<error-page>中的web.xml不处理它们。使用自定义异常处理程序,您将能够导航到特定的错误页面,以便在JavaScript警报对话框中以完整的荣耀显示而不是隐藏的异常消息。但是对于同步(普通HTTP)请求的异常,与<error-page>中的web.xml相比,它有点过分。


  

在这两种情况下(“web.xml”或“异常处理程序”):我是否必须重定向到jsp页面而不是facelet页面? (因为异常可能是由jsf问题本身引起的,并且可能导致循环)。或者我可以重定向到facelet页面吗?重定向到jsp页面的缺点是必须配置jsf应用程序以允许jsp和facelets(只有facelet页面会更“干净”)。

只需确保异常页面没有错误。这无论是JSP还是Facelets页面。这些错误可能会在JSP页面中蔓延。


  

最后,另一个问题:“自定义异常处理程序”也处理“已检查”异常?目前,我在托管bean中处理它们(捕获它们并在应用程序页面中显示facesmessage)。

它处理各种异常。