首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ServletContextListener中处理Java异常的首选方法

在ServletContextListener中处理Java异常的首选方法
EN

Stack Overflow用户
提问于 2010-10-27 16:36:39
回答 4查看 7.6K关注 0票数 21

对于servlet生命周期的东西,你们有什么建议来响应异常...

例如,

代码语言:javascript
复制
public class Foo implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        try {
           // something nasty
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        try {
           // something nasty
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

我不完全确定什么将处理上面的运行时异常。我的想法是,如果在这里抛出异常,它们的严重程度足以完全破坏系统,因此(未处理的)运行时异常可能是可以的。

我想我是在问是什么处理来自servlet上下文侦听器的未检查异常?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-27 21:23:09

捕获异常时,可能需要考虑设置ServletContext属性以指示遇到错误。这样,如果容器没有禁用应用程序,您可以让Filter和/或Servlet检查ServletContext属性,并采取适当的操作,如显示错误页面。

票数 11
EN

Stack Overflow用户

发布于 2010-10-27 16:55:17

看起来ServletContentListener并不是为了能够控制生命周期而设计的(否则它将被允许抛出ServletException)。

因此,我不会依赖RuntimeException来做任何有用的事情。查看some other threads here,它似乎在某些应用程序服务器上被记录和忽略。

如果在代码失败时应用程序不启动是很重要的,那么您应该将该代码移到Servlet的初始化部分。

票数 7
EN

Stack Overflow用户

发布于 2010-10-27 16:43:05

这是一个很好的语气,显示一些页面,如“技术错误,对不起”,而不是显示堆栈跟踪与错误消息。只需将其记录下来,并将用户转发到错误页面。

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

https://stackoverflow.com/questions/4031275

复制
相关文章

相似问题

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