目录
- 统一异常处理
统一异常处理
通过使用注解@ControllerAdvice(控制器通知类)+@ExceptionHandler(异常处理器)来实现,两个结合表示出现异常的时候执行某个通知,即执行某个方法事件。
对应的异常类执行对应的方法,进行匹配异常,如果没有匹配到的异常是按深度进行排序然后取第一个异常。
package com.example.book.config;import com.example.book.model.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;//对应的异常类执行对应的方法,进行匹配异常,如果没有匹配到的异常是按深度进行排序然后取第一个异常。
@Slf4j
@ResponseBody
@ControllerAdvice
public class ExceptionAdvice {//针对没有捕获的异常进行捕获@ExceptionHandlerpublic Result handlerException(Exception e) {// 如果不加打印日志error,错误信息就不会出来log.error("发生异常,e:",e);return Result.fail("内部错误");}@ExceptionHandlerpublic Result handlerException(NullPointerException e) {log.error("发生异常,e:",e);return Result.fail("发生空指针异常");}@ExceptionHandlerpublic Result handlerException(ArithmeticException e) {log.error("发生异常,e:",e);return Result.fail("发生算术异常");}
}