高端企业网站建设,可信网站图标,长沙优秀网站建设,做网站什么服务器好统一异常处理 统⼀异常处理使⽤的是 ControllerAdvice ExceptionHandler 来实现的#xff0c;
类上面加上 ControllerAdvice 注解表示控制器通知类方法上面加上 ExceptionHandler 表示异常处理器#xff0c;并添加异常返回的业务代码
两个结合表示当出现异常的时候执⾏某个… 统一异常处理 统⼀异常处理使⽤的是 ControllerAdvice ExceptionHandler 来实现的
类上面加上 ControllerAdvice 注解表示控制器通知类方法上面加上 ExceptionHandler 表示异常处理器并添加异常返回的业务代码
两个结合表示当出现异常的时候执⾏某个通知也就是执⾏某个⽅法事件具体实现代码如下
ControllerAdvice // 表示针对 Controller 的通知类
public class MyExceptionAdvice {// 依靠这个注解, 当出现异常时, 我们就能拿到这个异常ExceptionHandler(Exception.class) // 括号里面是要匹配的异常的类型表示针对哪种异常的统一处理如果出现的异常不匹配则拦截不到。ResponseBody // 表示返回的不是静态页面public Object handler(Exception e) {HashMapString, Object map new HashMap();map.put(state, -1);map.put(data, null);map.put(msg, e.getMessage());return map;}
}⽅法名和返回值可以⾃定义其中最重要的是 ControllerAdvice 和 ExceptionHandler(Exception.class) 注解。 ControllerAdvice ResponseBody 可以等价替换为 RestControllerAdvice
以上⽅法表示如果出现了异常就返回给前端⼀个 HashMap 的对象。
我们可以针对不同的异常返回不同的结果
RestControllerAdvice
public class MyExceptionAdvice {ExceptionHandler(Exception.class) // 能接收所有的异常public Object exceptionAdvice(Exception e) {HashMapString, Object result new HashMap();result.put(state, -1);result.put(message, 总的异常信息 e.getMessage());result.put(data, null);return result;}ExceptionHandler(NullPointerException.class) // 只能接收空指针异常public Object nullPointerExceptionAdvice(NullPointerException e) {HashMapString, Object result new HashMap();result.put(state, -1);result.put(message, 空指针异常 e.getMessage());result.put(data, null);return result;}
}当有多个异常通知时匹配顺序为当前类 - 当前类的父类 - 父类的父类。
比如上述代码出现空指针异常时虽然上面两个都可以接收 NullPointerException 异常 但是会优先匹配上 nullPointerExceptionAdvice 这个方法而不是 exceptionAdvice。 注意如果你把异常给 catch 的话就拦截不到了并且 catch 之后会影响事务的回滚所以 Spring Boot 中 try catch 不是想加就加的。
好啦 以上就是对 统一异常处理 的讲解希望能帮到你 评论区欢迎指正 !