#博学谷IT学技术支持#
//自动生成get、set方法
@Data
//生成一个无参数的构造方法
@NoArgsConstructor
//会生成一个包含所有变量的构造方法,默认生成的方法是 public 的
@AllArgsConstructor
@Builder
//vo是用来做数据响应模块
public class ErrorResult {
private String errCode = "999999";
private String errMessage;
public static ErrorResult error() {
//lombok创建对象的方式,和实例化是一样的
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();
}
......
}
}
/**
* 自定义异常
*/
@Data
public class BusinessException extends RuntimeException{
private ErrorResult errorResult;
public BusinessException(ErrorResult errorResult){
super(errorResult.getErrMessage());
this.errorResult = errorResult;
}
}
/**
* 自定义统一异常处理
* 1.通过注解,声明异常处理
* 2.编写方法,在方法内部处理异常,构造响应数据
* 3.方法上编写注解,指定此方法可以处理的异常类型
*/
//用于修饰类,表示该类是Controller的全局配置类
@ControllerAdvice
public class ExceptionAdvice {
//用于修饰方法,该方法会在Controller出现异常后被调用,用于处理捕获到的异常
@ExceptionHandler(BusinessException.class)//自定义BusinessException
public ResponseEntity handlerException(BusinessException be){
be.printStackTrace();
ErrorResult errorResult = be.getErrorResult();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResult);
}
@ExceptionHandler(Exception.class)//Exceptionr.classs的作用是代表异常的类型,这里Exception就代表全部的类型
public ResponseEntity handlerException1(Exception be){
be.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ErrorResult.error());
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务