Spring Boot 全局异常处理
-
在常规的三层spring boot项目中定义全局异常处理类
@Slf4j @RestControllerAdvice //启用异常处理 @Component public class GlobalException extends RuntimeException { @ExceptionHandler(value = UserInfoNullException.class) //定义该方法需要处理的被抛出的异常类型 public String handleUserInfoNullException(UserInfoNullException e) { System.out.println(e.getClass()); return "exception success"; } @ExceptionHandler(value = Exception03.class) //定义该方法需要处理的被抛出的异常类型(包括其子类) public String handleException03(Exception03 exception) { if (exception instanceof Exception02) { //判断抛出异常的确切异常类型 return "02"; } else if (exception instanceof Exception01) { return "01"; } else { return "系统内部错误"; } } public GlobalException() { } public GlobalException(String message) { super(message); } public GlobalException(String message, Throwable cause) { super(message, cause); } public GlobalException(Throwable cause) { super(cause); } public GlobalException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } }
-
自定义系统中可能抛出的异常
//异常类1 public class Exception01 extends Exception03 { public Exception01() { } public Exception01(String message) { super(message); } public Exception01(String message, Throwable cause) { super(message, cause); } public Exception01(Throwable cause) { super(cause); } public Exception01(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } } //异常类2 public class Exception02 extends Exception03{ public Exception02() { } public Exception02(String message) { super(message); } public Exception02(String message, Throwable cause) { super(message, cause); } public Exception02(Throwable cause) { super(cause); } public Exception02(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } } //异常类3 public class Exception03 extends GlobalException { public Exception03() { } public Exception03(String message) { super(message); } public Exception03(String message, Throwable cause) { super(message, cause); } public Exception03(Throwable cause) { super(cause); } public Exception03(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } } //注:上述异常类全为GlobalException类的子类
-
相关项目Github地址:项目demo