1、定义异常的枚举类型
public enum AppExceptionEnum {
ByZero("除以零异常");
private String message;
AppExceptionEnum( String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
2、自定义异常
public class AppException extends RuntimeException{
public AppException(AppExceptionEnum appExceptionEnum) {
super(appExceptionEnum.getMessage());
}
public AppException(String message) {
super(message);
}
}
3、定义返回结果集
@Data
public class ResultInfo {
private boolean flag;
private String msg;
private Object data;
private String code;
}
4、定义全局异常捕获拦截
@RestControllerAdvice
@Slf4j
public class globalExceptionHandler {
@ExceptionHandler(AppException.class)
public ResultInfo appExceptionHandler(AppException appException){
ResultInfo resultInfo = new ResultInfo();
resultInfo.setFlag(false);
resultInfo.setMsg(appException.getMessage());
resultInfo.setCode("500");
log.info(appException.getMessage());
return resultInfo;
}
}
5、使用自定义异常
@Slf4j
@RequestMapping("/test")
@RestController
public class TestController {
@RequestMapping("/start")
public void query(int b){
log.info("启动=======");
if(b==0){
throw new AppException("程序错误hhh");
}
return;
}
}