欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

十三,SpringBoot-全局异常处理器

程序员文章站 2022-04-22 13:41:48
...

这个不是必须的,只是说使用后可以更好的处理自己处理异常。当然了也不是说它的实用性不高,这个还是根据项目而定。

废话不多说,这里主要用到两个注解:

①,@ControllerAdvice   字面理解是通知,用这个可以说告诉spring我当前这个类是用来捕获所有Controller的异常

②,@ExceptionHandler  用来配置捕获哪些异常

=========以下仅为示例========

一,创建GlobalException.java

package webdev.globalException;


import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@ControllerAdvice //通知
public class GlobalException {

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Map<String,Object> globalException(Exception e){

        Map<String,Object> map = new HashMap<>();
        map.put("code",1001);

        if (e instanceof ArrayIndexOutOfBoundsException){
            map.put("error","越界异常");
        }
        if (e instanceof ArithmeticException){
            map.put("error","运算异常");
        }
        return map;
    }
}

②,Controller (这里面写了一个运算异常)

    @RequestMapping("/exceptionTest")
    @ResponseBody
    public String  exceptionTest(){
        int num = 1/0;
        return "ExTest";
    }

③,启动访问

十三,SpringBoot-全局异常处理器

到这是不是感觉在此基础上做些其它的操作?比如系统发生异常后及时给运维或开发人员推送通知消息。比如结合邮件,公众号等等为运维或开发人员及时推送消息通知。当然这个用不用还是看项目看需求,所以说不是必须的但也是比较重要的。

 

相关标签: springBoot开发