Springboot全局异常处理
- 编写自定义异常类
public class MyException extends RuntimeException {
private int code;
private String msg;
public MyException(int code,String msg){
this.code=code;
this.msg=msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
2.编写全局异常处理
@ControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(value=Exception.class)
@ResponseBody
public Object errorExcepton(HttpServletRequest request,HttpServletResponse response,Exception e){
if (e instanceof MyException){
MyException myException=(MyException)e;
return ResultUtil.error(myException.getCode(),myException.getMsg());
}else{
return ResultUtil.error(ErrorEnum.UNKNOWN_ERROR.getCode(),ErrorEnum.UNKNOWN_ERROR.getMsg());
}
}
}
3.枚举
public enum ErrorEnum {
UNKNOWN_ERROR(10000,"系统错误"),
SUCCESS(200,"操作成功"),
ERROR1(2000,"错误1");
private int code;
private String msg;
private ErrorEnum(int code,String msg){
this.code=code;
this.msg=msg;
}
......set/get 省略
}
如果全部异常处理返回json,那么可以使用 @RestControllerAdvice 代替 @ControllerAdvice ,这样在方法上就可以不需要添加 @ResponseBody