SpringBoot全局异常处理

1、背景

一般来说,如果直接抛出异常,会返回客户端很多不友好的信息,比如


image.png

如果我们自己做try catch的处理,我们不得不对每一个异常进行处理,会使程序显的臃肿,所以我们这是需要全局的异常处理

2、解决

1、全局异常处理需要的2个注解

@RestControllerAdvice
@ExceptionHandler

这里说下@ExceptionHandler 看起源码

public @interface ExceptionHandler {
    /**
     * Exceptions handled by the annotated method. If empty, will default to any
     * exceptions listed in the method argument list.
     */
    Class[] value() default {};
}

这里英文说明,如果@ExceptionHandler 后面不加限制 ,则是代表所有的异常都捕获,相当于是个过滤的作用,比如@ExceptionHandler(ZDYException.class) 表明只捕获ZDYException类的异常

自己测试的Demo如下

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public String handleExceptions(Exception e){
     return e.getMessage();
    };
}

这个Demo是捕获全局的所有异常,并返回异常信息

参考资料:https://www.jianshu.com/p/12e1a752974d

你可能感兴趣的:(SpringBoot全局异常处理)