首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理JSF应用程序中的异常

处理JSF应用程序中的异常
EN

Stack Overflow用户
提问于 2010-10-22 20:43:16
回答 2查看 4.8K关注 0票数 2

这个问题可能过于模棱两可,但我正在寻找一些关于处理JavaServer Faces应用程序中异常的帮助或最佳实践。

现在,每当我捕获一个异常时,我都会记录它,然后抛出我创建的另一个异常,比如MyCustomException。此自定义异常接受捕获的Throwable对象,并将堆栈跟踪发送给我,以便我知道发生了异常。就目前而言,这似乎适用于我,直到出现异常时才得到通知。

但是,我遇到的问题是如何向用户提供一个非常错误的页面,让他们知道出了什么问题,并且已经通知了错误。在进行一些搜索时,我遇到了几篇文章,这些文章展示了如何使用类似于以下内容的方法将用户重定向到另一个页面:

代码语言:javascript
复制
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext extContext = context.getExternalContext();

String url = extContext.encodeActionURL(extContext.getRequestContextPath() +
    "/messages.faces");

extContext.redirect(url);

但这似乎是相当多的基本上复制和粘贴每个捕获的异常,这不完全符合干燥原则。最后,我想我要做的是在异常发生时向我发送一封电子邮件,然后将消息发送到一个通用错误页面,然后将消息显示给用户。

有什么我应该遵循的想法或最佳做法吗?谢谢您能给我的任何建议!我很困惑。

注意:如果有帮助的话,我将使用JSF2.0和

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-22 22:00:03

这个urls可能对您有用:

http://weblogs.java.net/blog/edburns/archive/2009/09/03/dealing-gracefully-viewexpiredexception-jsf2

http://andyschwartz.wordpress.com/2009/07/31/whats-new-in-jsf-2/

http://download.oracle.com/docs/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/api/javax/faces/context/ExceptionHandler.html

基本上,您必须在JSF2.0,ExceptionHandler中使用新特性。这是处理意外异常的中心点。您可以指示每个异常类型使用哪个页面。

票数 4
EN

Stack Overflow用户

发布于 2010-10-22 21:08:37

您可能希望使用servlet过滤器来捕获(并处理)异常。这样,只有一个全局捕获块:-)

也就是说,您可以在FacesServlet周围映射一个过滤器,这样做:

代码语言:javascript
复制
try {
    chain.proceed(request, response);
} catch (Exception e) {
    // handle the exception
}

您的JSF实现也可能有错误页面的概念。如果是这样,您可能必须禁用错误页,以便异常到达筛选器。

您可能会发现http://javaboutique.internet.com/tutorials/Servlet_Filters/很有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4000798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档