SpringBoot使用ControllerAdvice和ExceptionHandler進行統一異常處理

@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;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章