天天看點

SpringBoot統一異常處理流程BasicErrorController定義全局異常處理類:并用@ControllerAdvice注解自定義異常類總結

Spring 3.2新增**@ControllerAdvice** 注解用于定義

  • @ExceptionHandler
  • @InitBinder
  • @ModelAttribute\

并應用到所有@RequestMapping。

BasicErrorController

SpringBoot内置了一個BasicErrorController對異常進行統一的處理,當在頁面發生異常的時候會自動把請求轉到/error(Spring Boot提供的一個預設的映射) ,可以自定義頁面内容,隻需在classpath路徑下建立error頁面即可。當然我們也可以自定義error頁面的路徑

如:

server.error.path=/custom/error      

BasicErrorController提供兩種傳回錯誤一種是頁面傳回、當你是頁面請求的時候就會傳回頁面,另外一種是json請求的時候就會傳回json錯誤。

定義全局異常處理類:并用@ControllerAdvice注解

  • 傳回視圖,建立方法defaultErrorHandler 用@ExceptionHandler注解
  • 傳回JSON,建立方法 用jsonErrorHandler 用@ExceptionHandler和@ResponseBody(必須)注解
  • SpringBoot統一異常處理流程BasicErrorController定義全局異常處理類:并用@ControllerAdvice注解自定義異常類總結

自定義異常類

繼承Exception(或RuntimeException)

SpringBoot統一異常處理流程BasicErrorController定義全局異常處理類:并用@ControllerAdvice注解自定義異常類總結

頁面

SpringBoot統一異常處理流程BasicErrorController定義全局異常處理類:并用@ControllerAdvice注解自定義異常類總結

如果全部異常處理傳回json,那麼可以使用 @RestControllerAdvice 代替 @ControllerAdvice ,這樣在方法上就可以不需要添加 @ResponseBody。

總結

SpringBoot統一異常處理流程BasicErrorController定義全局異常處理類:并用@ControllerAdvice注解自定義異常類總結