spring boot全局异常捕捉

Spring有帮我们做异常处理(页面跳转)有兴趣的可以研究研究BasicErrorController这个类,这是springboot处理异常的源码,它的原理很简单,就是判断请求头:Accept 是否是text/html,如果是返回view,如果不是返回json。但是我们发现它的报错信息不太符合开发,所以我们需要自定义报错信息。

1. 首先创建自定义异常

创建一个自定义异常。

package com.laojiao.securitydemo.myexception;

/**
 * Created by Fant.J.
 */
public class UserNotExistException extends RuntimeException {

    private String id;

    public UserNotExistException(String id) {
        super("user not exist");
        this.id = id;

    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

2. 创建异常处理类

package com.laojiao.securitydemo.myexception;

/**
 * 错误处理器:处理其他Controller出的异常
 * Created by Fant.J.
 */
@ControllerAdvice
public class ControllerException {

    @ExceptionHandler(UserNotExistException.class)   //需要处理的 异常类
    @ResponseBody   //json格式
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)   //响应状态:服务器内部错误异常
    public Map handleUserNotExistException(UserNotExistException ex){

        Map result = new HashMap<>();
        result.put("id",ex.getId());
        result.put("message",ex.getMessage());
        return result;
    }
}

我在这里返回json,所以用了@ResponseBody注解。

spring boot全局异常捕捉_第1张图片

你可能感兴趣的:(spring boot全局异常捕捉)