2012-10-29 89 views
3

我试图使用servlet处理错误的一个简单的Web应用程序,并且它工作得很好用专门定义任何错误异常类型在我的web.xml。不过,如果我尝试使用HttpServletResponse.sendError方法发送HTML错误代码,web.xml中似乎没有拿起错误,并只显示该特定HTML状态码Tomcat的默认错误页面。response.sendError()显示的Tomcat默认的错误页面,而不是web.xml中指定错误页面

我的错误处理servlet有一对“catch-all”通用错误页面,如果它不匹配某个特定的错误代码,它会生成一个通用错误页面,所以错误根本就没有进入servlet,而我完全不明白为什么这样做。

这里是我的web.xml的相关片段:

<error-page> 
    <error-code>400</error-code> 
    <location>/Error</location> 
</error-page> 
<error-page> 
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/Error</location> 
</error-page> 

这里是我试图在servlet发送错误的例子:

if (thing.getSizeOfThing() == null || thing.getQuantity() <= 0) { 
    response.sendError(400); 
} 

我的错误处理的servlet将显示基于错误代码或异常类型,以及所生成的误差小服务程序相关的错误页面。正如我所说,这是例外伟大的工作,而不是工作在所有使用sendError方法发送错误。

我已确保在响应最小的内容大小的问题不是问题(或不应该是)因为我没有收到浏览器特定的错误页面,但是tomcat的通用400错误页面。

任何帮助,非常感谢!

回答

1

解决:

这是与我在错误处理的servlet忽略了一个NullPointerException异常的问题,所以Tomcat的默认设置为自己的错误页面。