所有的異常,並顯示自定義錯誤頁,我使用玩!框架1.2.5。我想以自定義的方式處理播放框架中的所有錯誤。例如,如果有路線錯誤,我想顯示一個適當的錯誤信息,而不是顯示整個路線文件。同樣對於其他錯誤,我想顯示我自己的錯誤頁面。這個怎麼做?處理,而不是默認的框架錯誤頁
1
A
回答
2
您可以通過創建新的子包上views
包名爲errors
定義自己的錯誤頁面。
404.html
爲找不到錯誤頁403.html
爲Forbidden錯誤頁:在這個子包,您可以使用錯誤代碼名稱,如您的自定義錯誤頁創建模板文件500.html
爲內部服務器錯誤頁- 等...
不要擔心不發現錯誤頁面的默認路由,它只是在開發模式,幫助開發階段中。在生產模式下,此錯誤頁面(默認框架錯誤頁面)將不會顯示。
- UPDATE
這@Catch
註釋辦理其他類型的異常可能是有用的。它充當控制器中的動作攔截器,並且在執行某個動作時發生異常時處理異常。請注意,此註釋僅適用於控制器類。
請檢查進一步閱讀文檔here。
2
我們需要比@iwawiwi提到要弄清楚什麼數據庫約束消息是由數據庫拋出更多的控制。這解決了使用的方法與在Controller
類@Catch
註釋是這樣的:
@Catch(value=PersistenceException.class)
public static void handleException(PersistenceException exception) {
..
}
我沒有聽說註解之前,這已經在我的工作情況相當不錯。
缺失路線,我們已經增加了一點在這個Controller
還有:
@Catch(value=ActionNotFoundException.class)
public static void catchRouteNotFound(ActionNotFoundException exception) {
String referer = session.get("referer");
Logger.error("ActionNotFoundException, referer: %s", referer);
Logger.error("Exception: %s", exception);
}
這樣我們就可以瞭解在應用程序中缺少路由/錯誤的鏈接。
相關問題
- 1. 處理404錯誤而不轉儲日誌中的默認錯誤。
- 2. 圖像而不是iPhone的MapKit框架中的默認引腳?
- 3. JavaEE默認錯誤處理程序servlet不會拋出錯誤
- 4. Spring框架默認錯誤頁面到JSON
- 5. 播放框架中的錯誤處理
- 6. 默認錯誤處理程序的定義是什麼?
- 7. 播放框架形式錯誤處理
- 8. 錯誤處理使用無框架
- 9. 在fatfree框架中處理錯誤
- 10. Objective-C框架錯誤處理
- 11. 自定義錯誤處理程序仍然加載默認錯誤頁面
- 12. 頁寬默認的異常處理
- 13. 默認錯誤頁面
- 14. Ruby的默認GUI框架是什麼?
- 15. response.sendError()顯示的Tomcat默認的錯誤頁面,而不是web.xml中指定錯誤頁面
- 16. Ubuntu 14.04上的php5.6不顯示錯誤,默認錯誤處理程序
- 17. Flask默認錯誤處理程序不被調用
- 18. 在Django REST框架中處理錯誤 - 返回空文件而不是錯誤視圖
- 19. 重定向到自定義錯誤頁面而不是默認的liferay錯誤頁面
- 20. 如何更改zend框架的默認應用程序標題錯誤頁面?
- 21. Python:什麼是SIGTERM的默認處理?
- 22. 發送http 401錯誤代碼而不是默認登錄頁面,spring security
- 23. 輸出自定義錯誤消息而不是默認的php錯誤消息
- 24. 自動提供HttpUnauthorizedResult(401錯誤)默認StatusDescription而不是null
- 25. 顯示錯誤而不是ruby默認值?
- 26. 在Windows窗體中替換默認的未處理的錯誤對話框
- 27. 錯誤設置默認棚架
- 28. Spring的默認登錄處理url的HTTP 404錯誤(/登錄)
- 29. 無法處理默認錯誤對話框動態的DataGridView(多NULL值)
- 30. 實體框架默認值
+1哇,太酷了。我只是注意到這個註釋的力量,..;)但是,當我們想要在控制器中的'@ Before'攔截器標記的某個動作中放置'@ Catch'攔截器時可能會遇到問題。因爲他們兩個充當攔截器。但是,這不是問題,只是不用'@ Catch'標記動作,只是在方法內部處理。不是嗎? – 2013-03-18 16:01:51
我認爲說實話不重要。據我所知,Play在你的控制器中尋找異常處理器來處理拋出的異常。如果它被引入'@ Before'註釋方法中,我認爲它不重要。我認爲你可以通過在@Before方法中拋出你自己的CustomException來輕鬆嘗試,並嘗試捕獲它。 – evandongen 2013-03-18 16:04:22