做seo网站 公司,周口logo设计公司,seo关键词排名优化怎样收费,响应式网站开发教程前言#xff1a;
当不同方法执行时#xff0c;抛出相同异常。为了简约代码和避免重复使用try{}catch{}。此时使用统一异常处理。但局部的统一异常处理只能为所在类所调用。因此产生全局异常处理#xff0c;该类中统一异常处理方法可以作用于整个controller。#xff08;以…前言
当不同方法执行时抛出相同异常。为了简约代码和避免重复使用try{}catch{}。此时使用统一异常处理。但局部的统一异常处理只能为所在类所调用。因此产生全局异常处理该类中统一异常处理方法可以作用于整个controller。以下以自定义异常类为示例
创建状态码枚举类用于自定义异常返回状态:
public enum ServiceCode {OK(2000),ERR_BAD_REQUEST(4000),ERR_NOT_FOUND(4040),ERR_UNAUTHORIZED(4010),ERR_UNAUTHORIZED_DISABLED(4011),ERR_FORBIDDEN(4030),ERR_CONFLICT(4090),ERR_INSERT(5000),ERR_DELETE(5010),ERR_UPDATE(5020),ERR_SELECT(5030),ERR_JWT_EXPIRED(6000),ERR_JWT_MALFORMED(6010),ERR_JWT_SIGNATURE(6020),ERR_UNKNOWN(9999);private Integer value;ServiceCode(Integer value) {this.value value;}public Integer getValue() {return value;}}
自定义异常类
public class ServiceException extends RuntimeException {private ServiceCode serviceCode;public ServiceException(ServiceCode serviceCode, String message) {super(message);this.serviceCode serviceCode;}public ServiceCode getServiceCode() {return serviceCode;}}
重点全局统一异常处理类
RestControllerAdvice //可以将此类中特定方法作用于整个controller
public class GlobalExceptionHandler {public GlobalExceptionHandler() {log.debug(创建全局异常处理器对象GlobalExceptionHandler);}ExceptionHandler//统一异常处理若只想某个类中单独共同处理可以直接使用该注解到某个统一异常处理方法中如下面方法为统一异常处理方法。public xxx handleServiceException(ServiceException e) {//ServiceException e是多个方法执行时抛出相同的异常类在这里进行统一处理log.warn(程序运行过程中出现ServiceException将统一处理);log.warn(异常信息{}, e.getMessage());return ;}
}
尾语
只要抛出ServiceException错误时无论在那个controller类中都能GlobalExceptionHandler捕获处理而不再需要在每个调用有ServiceException异常抛出的方法中进行捕获。