1、背景
一般来说,如果直接抛出异常,会返回客户端很多不友好的信息,比如
如果我们自己做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<? extends Throwable>[] value() default {};
}
这里英文说明,如果@ExceptionHandler 后面不加限制 ,则是代表所有的异常都捕获,相当于是个过滤的作用,比如@ExceptionHandler(ZDYException.class) 表明只捕获ZDYException类的异常
自己测试的Demo如下
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public String handleExceptions(Exception e){
return e.getMessage();
};
}
这个Demo是捕获全局的所有异常,并返回异常信息