簡(jiǎn)單了解SpringMVC全局異常處理常用方法
項(xiàng)目中,可能會(huì)拋出多個(gè)異常,我們不可以直接將異常的堆棧信息展示給用戶,有兩個(gè)原因:
- 用戶體驗(yàn)不好
- 非常不安全
所以,針對(duì)異常,我們可以自定義異常處理,SpringMVC 中,針對(duì)全局異常也提供了相應(yīng)的解決方案,主要是通過(guò) @ControllerAdvice 和@ExceptionHandler 兩個(gè)注解來(lái)處理的。
以上傳大小超出限制為例,自定義異常,只需要提供一個(gè)異常處理類(lèi)即可:
@ControllerAdvice//表示這是一個(gè)增強(qiáng)版的 Controller,主要用來(lái)做全局?jǐn)?shù)據(jù)處理 public class MyException { @ExceptionHandler(Exception.class) public ModelAndView fileuploadException(Exception e) { ModelAndView error = new ModelAndView("error"); error.addObject("error", e.getMessage()); return error; } }
在這里:
- @ControllerAdvice 表示這是一個(gè)增強(qiáng)版的 Controller,主要用來(lái)做全局?jǐn)?shù)據(jù)處理
- @ExceptionHandler 表示這是一個(gè)異常處理方法,這個(gè)注解的參數(shù),表示需要攔截的異常,參數(shù)為 Exception 表示攔截所有異常,這里也可以具體到某一個(gè)異常,如果具體到某一個(gè)異常,那么發(fā)生了其他異常則不會(huì)被攔截到。
- 異常方法的定義,和 Controller 中方法的定義一樣,可以返回 ModelAndview,也可以返回 String 或者 void
例如如下代碼,指揮攔截文件上傳異常,其他異常和它沒(méi)關(guān)系,不會(huì)進(jìn)入到自定義異常處理的方法中來(lái)。
@ControllerAdvice//表示這是一個(gè)增強(qiáng)版的 Controller,主要用來(lái)做全局?jǐn)?shù)據(jù)處理 public class MyException { @ExceptionHandler(MaxUploadSizeExceededException.class) public ModelAndView fileuploadException(MaxUploadSizeExceededException e) { ModelAndView error = new ModelAndView("error"); error.addObject("error", e.getMessage()); return error; } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
spring.mvc.servlet.load-on-startup屬性方法源碼解讀
這篇文章主要介紹了spring.mvc.servlet.load-on-startup的屬性方法源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Kotlin 語(yǔ)言中調(diào)用 JavaScript 方法實(shí)例詳解
這篇文章主要介紹了Kotlin 語(yǔ)言中調(diào)用 JavaScript 方法實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06java利用Apache commons codec進(jìn)行MD5加密,BASE64加密解密,執(zhí)行系統(tǒng)命令
這篇文章主要介紹了java利用apache Commons包進(jìn)行MD5加密,BASE64加密解密與執(zhí)行系統(tǒng)命令希望對(duì)大家有用2017-12-12Java語(yǔ)言實(shí)現(xiàn)快速冪取模算法詳解
這篇文章主要介紹了Java語(yǔ)言實(shí)現(xiàn)快速冪取模算法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11詳解SpringBoot如何實(shí)現(xiàn)緩存預(yù)熱
緩存預(yù)熱是指在 Spring Boot 項(xiàng)目啟動(dòng)時(shí),預(yù)先將數(shù)據(jù)加載到緩存系統(tǒng)(如 Redis)中的一種機(jī)制,下面我們就來(lái)看看SpringBoot是如何實(shí)現(xiàn)緩存預(yù)熱的吧2024-01-01詳解Java多態(tài)對(duì)象的類(lèi)型轉(zhuǎn)換與動(dòng)態(tài)綁定
這篇文章主要介紹了詳解Java多態(tài)對(duì)象的類(lèi)型轉(zhuǎn)換與動(dòng)態(tài)綁定,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09