为何要捕获异常?前端
咱们开发中,常常运行时,代码会报错,这时候咱们有可能抛出异常,而不是用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("全局异常,未知错误!"); } }}