2011-09-07 131 views
0

我想在發生錯誤時將用戶發送到一個錯誤頁面,無論是404,500..etc。我在web.xml中使用了錯誤代碼,但我想要捕獲java.lang.Throwable的所有實例,因爲我相信任何錯誤都是java.lang.Throwable的子類。另外,當我使用錯誤代碼方案時,堆棧跟蹤不再出現在Tomcat的catlina.out中了...有什麼想法?我不確定JSF2的ExceptionHandler API是否處理404s?全局處理JSF2中的異常

<error-page> 
    <error-code>404</error-code> 
    <location>/pageNotFound.html</location> 
    </error-page> 
    <error-page> 
    <error-code>500</error-code> 
    <location>/systemError.html</location> 
    </error-page> 
+0

你正在努力解決的問題是什麼?這個問題並不完全清楚。每當你指定一個自定義HTTP 500錯誤頁面時,是否不再打印堆棧跟蹤的具體問題?這不應該發生。問題會更多。 – BalusC

+0

問題是當我只在web.xml中捕獲錯誤代碼時,堆棧跟蹤不再打印500秒。我認爲可能有比我所做的更好的方法。我已經發布了我的web.xml代碼現在...任何建議? – c12

+0

所以,當你從'web.xml'單獨刪除500條目時,那麼stacktrace已經被打印了?你在使用什麼Tomcat版本? – BalusC

回答

1

當我用錯誤碼方案,則蹤跡都沒有出現在Tomcat的catlina.out了

這不是標準的行爲。你的問題是由別的東西引起的。也許這是錯誤的測試方法,或者你可能會抑制異常並手動重定向到某些Filter之類的東西。根據所提供的信息,這是無法回答的。


我不知道,如果JSF2的API的ExceptionHandler處理404?

取決於。如果請求URL匹配FacesServlet,那麼默認情況下會拋出FileNotFoundException,最終會以HTTP 500結尾。如果請求URL與FacesServlet或任何其他servlet不匹配,那麼servlet容器將將其作爲HTTP 404處理。