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

 

你可能感兴趣的:(Java,SpringBoot)