实体类:
import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; /** * 可预知的异常 */ @Data @NoArgsConstructor @AllArgsConstructor @Builder public class ErrorResult { private String errCode = "999999"; private String errMessage; public static ErrorResult error() { return ErrorResult.builder().errCode("999999").errMessage("系统异常稍后再试").build(); } public static ErrorResult fail() { return ErrorResult.builder().errCode("000001").errMessage("发送验证码失败").build(); } public static ErrorResult loginError() { return ErrorResult.builder().errCode("000002").errMessage("验证码失效").build(); } public static ErrorResult faceError() { return ErrorResult.builder().errCode("000003").errMessage("图片非人像,请重新上传!").build(); } public static ErrorResult mobileError() { return ErrorResult.builder().errCode("000004").errMessage("手机号码已注册").build(); } public static ErrorResult contentError() { return ErrorResult.builder().errCode("000005").errMessage("动态内容为空").build(); } public static ErrorResult likeError() { return ErrorResult.builder().errCode("000006").errMessage("用户已点赞").build(); } public static ErrorResult disLikeError() { return ErrorResult.builder().errCode("000007").errMessage("用户未点赞").build(); } public static ErrorResult loveError() { return ErrorResult.builder().errCode("000008").errMessage("用户已喜欢").build(); } public static ErrorResult disloveError() { return ErrorResult.builder().errCode("000009").errMessage("用户未喜欢").build(); } public static ErrorResult HandExetions() { return ErrorResult.builder().errCode("0000010").errMessage("我是自定义的").build(); } }
继承类:
import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; //自己定义的异常 @Data public class MyError extends Exception { @Autowired private ErrorResult result; //参数是你想传入的错误类型 赋值给本地的result public MyError(ErrorResult result) { this.result = result; } }
import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; /** * 不可预知的异常 */ @ControllerAdvice public class ExceptionAdive { @ExceptionHandler(value = MyError.class) private ResponseEntity HandException(MyError e){ e.printStackTrace(); return ResponseEntity.status(500).body(e.getResult()); } @ExceptionHandler(value = Exception.class) private ResponseEntity exception(Exception e){ e.printStackTrace(); return ResponseEntity.status(500).body(ErrorResult.HandExetions()); } }
使用方法:
throw new MyError(ErrorResult.fail());
返回结果:
{
"errCode": "000001",
"errMessage": "发送验证码失败"
}