關(guān)于Spring框架中異常處理情況淺析
1.編寫一個(gè)類,實(shí)現(xiàn)HandlerExceptionResolver接口
@Component
public class ExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
System.out.println("異常處理器正在執(zhí)行中");
ModelAndView mv = new ModelAndView();
if (e instanceof NullPointerException){
mv.addObject("msg","空指針異常");
}else if (e instanceof AccessDeniedException){
mv.addObject("msg","沒(méi)有訪問(wèn)權(quán)限");
System.out.println("111---222---333");
}
mv.setViewName("/error.html");
return mv;
}
}
步驟2:在類上添加@Component注解,將類放入容器中。
或者在配置文件中聲明該類的bean標(biāo)簽
<bean class="com.itheima.exception.MyExceptionResolver"></bean>
1.異常處理 實(shí)現(xiàn)HandlerExceptionResolver接口 同一處理所有異常,需要手動(dòng)細(xì)分異常 返回類型被限定為ModelAndView
2.自定義類,類上加注解@ControllerAdvice
@ControllerAdvice:聲明該類是一個(gè)Controller的通知類,聲明后該類就會(huì)被加載成異常處理器
//聲明該類是一個(gè)Controller的通知類,聲明后該類就會(huì)被加載成異常處理器
@ControllerAdvice
public class ExceptionAdvice {
//類中定義的方法攜帶@ExceptionHandler注解的會(huì)被作為異常處理器,后面添加實(shí)際處理的異常類型
@ExceptionHandler(NullPointerException.class)
@ResponseBody
public String doNullException(Exception ex) {
return "空指針異常";
}
//算術(shù)異常
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public String doArithmeticException(Exception ex) {
return "ArithmeticException";
}
@ExceptionHandler(Exception.class)
@ResponseBody
public String doException(Exception ex) {
return "all";
}
}
兩種異常處理的區(qū)別:
1.第二種注解異常處理可以處理 handler 方法參數(shù)出現(xiàn)異常的情況,而第一種處理不了。
2.第二種注解異常處理對(duì)結(jié)果更加靈活,可以返回ModelAndView、String、對(duì)象等。
總結(jié)
到此這篇關(guān)于Spring框架中異常處理情況的文章就介紹到這了,更多相關(guān)Spring異常處理情況內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
drools規(guī)則動(dòng)態(tài)化實(shí)踐解析
這篇文章主要為大家介紹了drools規(guī)則動(dòng)態(tài)化實(shí)踐解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
使用Java和WebSocket實(shí)現(xiàn)網(wǎng)頁(yè)聊天室實(shí)例代碼
WebSocket是HTML5一種新的協(xié)議,它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信,這里就將使用WebSocket來(lái)開(kāi)發(fā)網(wǎng)頁(yè)聊天室,對(duì)Java和WebSocket實(shí)現(xiàn)網(wǎng)頁(yè)聊天室的實(shí)例代碼感興趣的朋友一起學(xué)習(xí)吧2016-06-06
springboot 緩存@EnableCaching實(shí)例
這篇文章主要介紹了springboot 緩存@EnableCaching實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java 如何使用@Autowired注解自動(dòng)注入bean
這篇文章主要介紹了Java 使用@Autowired注解自動(dòng)注入bean的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
關(guān)于mybatis傳入?yún)?shù)一直為null的問(wèn)題
這篇文章主要介紹了關(guān)于mybatis傳入?yún)?shù)一直為null的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
Java利用沙箱支付實(shí)現(xiàn)電腦掃碼支付教程
當(dāng)我們制作的項(xiàng)目需要實(shí)現(xiàn)電腦掃碼支付功能時(shí),我們往往會(huì)采用沙箱支付來(lái)模擬實(shí)現(xiàn)。本文將主要介紹如何在Java中利用沙箱支付實(shí)現(xiàn)這一功能,需要的可以參考一下2022-01-01
SpringBoot集成MongoDB的實(shí)現(xiàn)
本文主要介紹了SpringBoot集成MongoDB的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01

