Springboot异常处理器




- 现在我们在Controller制造一个异常,然后用异常处理器捕获
 这里1/0会报错,我们用postman测试一下。
 @GetMapping
    public Result<List<Book>> getAll(){
        int i=1/0;
        return bookService.getAll();
    }
@RestControllerAdvice
public class ProjectExceptionAdvice {
    //拦截所有的异常信息
    @ExceptionHandler(Exception.class)
    public void doException(Exception e){
        e.printStackTrace();
        System.out.println("嘿嘿,异常你往哪里跑!");
    }
}
postman什么都没有,因为被异常处理器捕获了。

看看控制台有没有输出,可以看到表现层的异常已经被捕获到了。

然后呢,也可以改进一下。
枚举状态码
package com.hxut.domain;
import org.omg.CORBA.INTERNAL;
/**
 * description: Response
 * date: 2022/5/23 21:09
 * author: MR.孙
 */
public class Response {
    public enum Code{
        //1001-1099成功
        SUCCESS(1001,"成功"),
        SAVE_SUCCESS(1002,"保存成功"),
        DELETE_SUCCESS(1003,"删除成功"),
        UPDATE_SUCCESS(1004,"修改成功"),
        SELECT_SUCCESS(1005,"查询成功"),
        //1101-1199失败
        FAILED(1101,"失败"),
        SAVE_FAILED(1102,"保存失败"),
        DELETE_FAILED(1103,"删除失败"),
        UPDATE_FAILED(1104,"修改失败"),
        SELECT_FAILED(1105,"查询失败"),
        //1201-1299参数错误或为空
        PARAM_IS_NULL(1201,"参数为空"),
        PARAM_IS_ERROR(1202,"参数错误"),
        //400-600异常状态码
        BAD_REQUEST(400,"请求数据格式不正确!"),
        UNAUTHORIZED(401,"登录凭证过期"),
        FORBIDDEN(403,"没有权限"),
        NOT_FOUND(404,"没有找到资源"),
        INTERNAL_SERVER_ERROR(500,"服务器内部错误"),
        SERVICE_UNAVAILABLE(503,"服务器繁忙"),
        //未知异常
        UNKNOWN(10000,"未知异常")
        ;
        private Integer code;
        private String msg;
        Code(Integer code, String msg) {
            this.code = code;
            this.msg = msg;
        }
        public Integer code() {
            return code;
        }
        public String msg() {
            return msg;
        }
    }
}
改进异常处理器
//拦截所有的异常信息
    @ExceptionHandler(Exception.class)
    public Result doException(Exception e){
        e.printStackTrace();
        System.out.println("嘿嘿,异常你往哪里跑!");
        return Result.ok(Response.Code.UNKNOWN.code(),Response.Code.UNKNOWN.msg(),null);
    }




 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号