2012-10-29 84 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的默認設置爲自己的錯誤頁面。