@ControllerAdvice和@RestControllerAdvice(兩者區別和@Controller/@RestController類似 , 都只是響應內容上的區別)是Spring提供的一個全局異常處理方案 , 通過簡單的配置我們可以處理項目中意外 , 省卻了在controller中重複寫try-catch的繁瑣.
package com.xbz.exceptionhandler.config;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* @title 全局異常處理器
* @description 通過ExceptionHandler 指定處理的異常類型 , 可以根據不同異常做出不同的響應
* @author Xingbz
* @createDate 2019-8-2
*/
@RestControllerAdvice
public class GlobalExceptionHandler {
/** 請求方式不支持 */
@ExceptionHandler({HttpRequestMethodNotSupportedException.class})
public JSONObject handleException(HttpRequestMethodNotSupportedException e) {
JSONObject json = new JSONObject();
json.put("msg", "不支持" + e.getMethod() + "請求");
return json;
}
/** 攔截未知的運行時異常 */
@ExceptionHandler(RuntimeException.class)
public JSONObject handleException(RuntimeException e) {
JSONObject json = new JSONObject();
json.put("msg", e.getMessage());
return json;
}
/** 系統異常(跳轉到一個頁面) */
@ExceptionHandler(Exception.class)
public ObjecthandleException(Exception e) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("/error.html");
return modelAndView;
}
}