springboot2.x如何配置全局自定义异常

为何要捕获异常?前端


 

咱们开发中,常常运行时,代码会报错,这时候咱们有可能抛出异常,而不是用try..catch来解决.并且如今先后端分离,若是不捕获异常的话,前端那边的人估计会被报的错搞得焦头烂额的.spring

 

springboot2.x是怎么自定义异常的?怎么捕获异常的?json


咱们自定义异常类,须要继承一个RuntimeException父类,而且包装好本身的异常类,通常是包装code(错误码),msg(错误信息).后端

 

/**
* 自定义异常类
*/
public class TestException extends RuntimeException{

Integer code;
String msg;

public TestException(Integer code, String msg) {
super(msg);
this.code = code;
this.msg = msg;
}

public Integer getCode() {
return code;
}

public void setCode(Integer code) {
this.code = code;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}
}


接着咱们须要建立一个异常处理器,这里是来捕获异常的.
/** * 异常处理控制器 */@ControllerAdvicepublic class TestExceptionHandler {    @ExceptionHandler(value = Exception.class) //通常是捕获最高级的exception类,或者你想捕获单独的一个异常类(好比咱们前面建立的TestException,不过推荐这种,相对简洁)    @ResponseBody //返回数据以json数据传输    public JsonData Handler(Exception e){ //jsonData是我自定义的一个包装类,主要用于传输给前端的数据        if(e instanceof TestException){ //判断异常类型            TestException testException = (TestException) e;             return JsonData.buildError(testException.getMsg(),testException.getCode());        }else{            return JsonData.buildError("全局异常,未知错误!");        }    }}
相关文章
相关标签/搜索