统一异常拦截

wxvirus2022年12月3日
小于 1 分钟

统一异常拦截

使用@RestControllerAdvice或者@ControllerAdvice注解来实现

同样使用前面定义的统一的响应实体来进行返回内容

实现代码

先在控制器层,简单使用 2 个异常来来抛出测试

@GetMapping("/test")
public String test(HttpServletRequest request) throws ClassNotFoundException {
    String t = request.getParameter("t");
    if (t.equals("1")) {
        throw new ClassNotFoundException("exception 1");
    } else {
        throw new ClassFormatException("exception 2");
    }
}

实现拦截

import org.apache.tomcat.util.bcel.classfile.ClassFormatException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import top.wjstar.model.Result;

@RestControllerAdvice
public class ExceptionHandle {

    @ExceptionHandler(ClassNotFoundException.class)
    public Result handler(Exception e) {
        return new Result("error", e.getMessage() + " " + e.getClass().getName());
    }

    @ExceptionHandler(ClassFormatException.class)
    public Result handler2(Exception e) {
        return new Result("error", e.getMessage() + " " + e.getClass().getName());
    }
}

这里可以写多个或者一个,一个就直接写Exception就可以【懒惰写法】。

image-20221203224739477

Loading...