Java SpringMVC的自定義異常類
1. 異常處理的思路
在java中,對于異常的處理一般有兩種方式:
- 一種在當前方法捕獲處理(
try-catch),這種處理方式會造成業(yè)務(wù)代碼和異常處理代碼的耦合。 - 另一種是自己不處理,而是拋給調(diào)用者處理(
throws),調(diào)用者在拋給它的調(diào)用者,也就是往上拋。這種方法的基礎(chǔ)上,衍生除了SpringMVC的異常處理機制。
系統(tǒng)的dao、service、controller出現(xiàn)都通過throws Exception向上拋出,最后由springmvc前端控制器交由異常處理器進行異常處理,如下圖:

2. 自定義異常處理器
步驟分析:
1.創(chuàng)建異常處理器類實現(xiàn)handlerExceptionResolver
2.配置異常處理器
3.編寫異常頁面
4.測試異常跳轉(zhuǎn)
(1)創(chuàng)建異常處理器類實現(xiàn)handlerExceptionResolver
public class GlobalExeceptionResovler implements HandlerExceptionResolver {
/**
*
* @param httpServletRequest
* @param httpServletResponse
* @param o:對應(yīng)的處理器
* @param e;實際拋出的異常對象
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
ModelAndView model = new ModelAndView();
//具體的異常處理 產(chǎn)生異常后,跳轉(zhuǎn)到一個最終的異常頁面
model.addObject("error",e.getMessage());//得到錯誤信息
model.setViewName("error");
return model;
}
}
(2)在Spring的配置文件配置異常處理器
<!-- 定義錯誤異常頁面-->
<bean id="globalExecptionResovler" class="com.weihong.excption.GlobalExeceptionResovler"/>
(3)編寫異常頁面
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>這是一個錯誤頁面</h2>
<h5>錯誤信息為:${error}</h5>
</body>
</html>
(4)測試異常跳轉(zhuǎn)
@RequestMapping("/jumpErrorPage")
public String jumpErrorPage(){
int res = 10 / 0;
return "success";
}
(5)測試結(jié)果

3. web的處理異常機制
- 當請求狀態(tài)為404或者500,指定頁面跳轉(zhuǎn)。
- 在其web.xml配置如下:
<!--處理500異常--> <error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page> <!--處理404異常--> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page>
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
SpringBoot集成FastDFS依賴實現(xiàn)文件上傳的示例
這篇文章主要介紹了SpringBoot集成FastDFS依賴實現(xiàn)文件上傳,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05
Java中stream處理中map與flatMap的比較和使用案例
這篇文章主要介紹了Java中stream處理中map與flatMap的比較和使用案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
解決springboot項目啟動報錯Error creating bean with&nb
這篇文章主要介紹了解決springboot項目啟動報錯Error creating bean with name dataSourceScriptDatabaseInitializer問題,具有很好的參考價值,希望對大家有所幫助2024-03-03
SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法
微服務(wù)架構(gòu)中多數(shù)據(jù)源切換是個常見的需求,Spring Boot 提供了強大的支持來簡化這一過程.本文給大家介紹了SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法,需要的朋友可以參考下2024-11-11
SpringBoot實現(xiàn)公共字段自動填充的方法步驟
這篇文章主要介紹了SpringBoot實現(xiàn)公共字段自動填充的方法步驟,文中通過代碼示例講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-11-11
Springboot初始化啟動報錯Error?creating?bean?with?name?'da
這篇文章主要為大家介紹了Springboot初始化啟動報Error?creating?bean?with?name?'dataSource'?defined?in?class?path?resource解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08

