异常处理和别的配置有所不同的是他不用添加依赖,直接在代码中实现即可
在一个多模块的系统中,一般情况下,异常处理都放到公共类中,具体怎么调用就不过多解释
创建一个GlobleExcaptionHandler类:
代码如下:
@ControllerAdvice
@Slf4j
public class GlobleExcaptionHandeler {
//全局异常处理
@ExceptionHandler(Exception.class)
@ResponseBody
public R error(Exception e){
e.printStackTrace();
return R.error().message("执行了全局异常处理!");
}
//特定异常处理
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public R error(ArithmeticException e){
e.printStackTrace();
return R.error().message("执行了ArithmeticException异常处理!");
}
}
以上是全局异常和特定异常的书写方法,后序自己补充。
自定义异常
有的时候需要我们自己来定义异常,那么该如何实现呢?
我们在同一个包下,再创建一个类,名字随便起
这个类需要继承一下RuntimeException类:
代码如下:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class YuanExcaption extends RuntimeException {
private Integer code;
private String msg;
}
然后我们返回GlobleExcaptionHandler类,补充代码即可!
//自定义异常处理
@ExceptionHandler(YuanExcaption.class)
@ResponseBody
public R error(YuanExcaption e){
log.error(e.getMsg());
e.printStackTrace();
return R.error().code(e.getCode()).message(e.getMsg());
}