长沙装饰公司seopc流量排行榜企业
目录
- 一 自定义异常
- 二 自定义注解
- 三 注解切面处理类
- 四 使用
一 自定义异常
/*** 自定义参数为null异常*/
public class NoParamsException extends Exception {//用详细信息指定一个异常public NoParamsException(String message){super(message);}//用指定的详细信息和原因构造一个新的异常public NoParamsException(String message, Throwable cause){super(message,cause);}//用指定原因构造一个新的异常public NoParamsException(Throwable cause) {super(cause);}
}
二 自定义注解
/*** 统一捕获service异常处理注解*/
@Documented
@Target({ElementType.METHOD, ElementType.TYPE}) //可在类或者方法使用
@Retention(RetentionPolicy.RUNTIME)
public @interface ServiceExceptionCatch {
}
三 注解切面处理类
@Component
@Aspect
@Slf4j
public class ServiceExceptionHandler {@Around("@annotation(com.zhuzher.annotations.ServiceExcepCatch) || @within(com.zhuzher.annotations.ServiceExcepCatch)")public ResponseMessage serviceExceptionHandler(ProceedingJoinPoint proceedingJoinPoint) {ResponseMessage returnMsg;try {returnMsg = (ResponseMessage) proceedingJoinPoint.proceed();} catch (Throwable throwable) {log.error("ServiceExcepHandler serviceExcepHandler failed", throwable);//单独处理缺少参数异常if(throwable instanceof NoParamsException) {returnMsg = ResponseMessage.failture(ErrorCode.ARG_CAN_NOT_BE_EMPTY);}else{//其他正常返回returnMsg=ResponseMessage.newErrorsMessage(throwable.getMessage());}}return returnMsg;}
}
四 使用
即可捕获该异常,并自定义处理逻辑
原文地址:https://www.cnblogs.com/houzheng/p/11953183.html