【发布时间】:2011-05-11 14:11:36
【问题描述】:
我的 web.xml 中配置了一个错误 servlet:
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/ExceptionHandler</location>
</error-page>
对吗?
在我的(一般)servlet 中:
doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
...
...
} catch (Exception e) {
throw new ServletException("some mesage", e);
}
}
所以,在这种情况下,“e”将是根本原因。
在我的 ExceptionHandler 类中,我有:
doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Throwable throwable = (Throwable) request.getAttribute("javax.servlet.error.exception");
throwable.getCause() //NULL
}
这就是问题所在。 throwable.getCause() 为空。
【问题讨论】:
-
您确定这是同一个例外并且您没有混淆吗?顺便说一句,您的“通用 servlet”代码在异常处理代码中有拼写错误,无法编译。
-
也许你有 new ServletException("some message" + e) 而不是 new ServletException("some message", e)?仔细检查提供的 Throwable 对象是有意义的,以查看您的代码中某处可能存在错误。 ;-)
-
我现在写了“通用 servlet”。请忽略语法错误。
-
我不能使用 new ServletException("some message" + e) 除非 e.toString() 给我所有的堆栈跟踪。这就是我想要的。错误的原始行。
-
别管我的cmets,我只是添加了一个答案:-)
标签: java servlets exception-handling