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

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

3. web的處理異常機(jī)制
- 當(dāng)請(qǐng)求狀態(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依賴實(shí)現(xiàn)文件上傳的示例
這篇文章主要介紹了SpringBoot集成FastDFS依賴實(shí)現(xiàn)文件上傳,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Java中stream處理中map與flatMap的比較和使用案例
這篇文章主要介紹了Java中stream處理中map與flatMap的比較和使用案例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
解決springboot項(xiàng)目啟動(dòng)報(bào)錯(cuò)Error creating bean with&nb
這篇文章主要介紹了解決springboot項(xiàng)目啟動(dòng)報(bào)錯(cuò)Error creating bean with name dataSourceScriptDatabaseInitializer問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2024-03-03
SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法
微服務(wù)架構(gòu)中多數(shù)據(jù)源切換是個(gè)常見的需求,Spring Boot 提供了強(qiáng)大的支持來簡(jiǎn)化這一過程.本文給大家介紹了SpringBoot中Druid連接池與多數(shù)據(jù)源切換的方法,需要的朋友可以參考下2024-11-11
Java使用正則表達(dá)式(regex)匹配中文實(shí)例代碼
本文給大家分享java使用正則表達(dá)式匹配中文的實(shí)例代碼,以及java中要匹配中文的正則表達(dá)式兩種寫法,感興趣的朋友通過本文一起看看吧2016-12-12
SpringBoot實(shí)現(xiàn)公共字段自動(dòng)填充的方法步驟
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)公共字段自動(dòng)填充的方法步驟,文中通過代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-11-11
Springboot初始化啟動(dòng)報(bào)錯(cuò)Error?creating?bean?with?name?'da
這篇文章主要為大家介紹了Springboot初始化啟動(dòng)報(bào)Error?creating?bean?with?name?'dataSource'?defined?in?class?path?resource解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08

