亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 自定義注解和springAOP捕獲Service層異常并處理自定義異常的示例分析

自定義注解和springAOP捕獲Service層異常并處理自定義異常的示例分析

發布時間:2021-06-07 14:36:45 來源:億速云 閱讀:209 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“自定義注解和springAOP捕獲Service層異常并處理自定義異常的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“自定義注解和springAOP捕獲Service層異常并處理自定義異常的示例分析”這篇文章吧。

一 自定義異常

/**
 * 自定義參數為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;
    }
}

自定義注解和springAOP捕獲Service層異常并處理自定義異常的示例分析

即可捕獲改異常,并自定義處理邏輯!

捕獲Service層異常,統一處理

新增注解,實現類和方法層級的異常捕獲

package com.ahdruid.aop.annotation;
import java.lang.annotation.*;
 
/**
 * 服務異常捕獲,如捕獲Service向外拋出的異常
 * <p>
 * 添加在類上、方法上
 *
 */
@Documented
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ServiceExcepCatch {
}

異常處理handler

package com.ahdruid.aop;
import com.ahdruid.ReturnMsg;
import com.ahdruid.errorenums.BaseErrorEnum;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
 
/**
 * 服務異常捕獲處理器
 * <p>
 * 如捕獲Service向外拋出的異常
 *
 */
@Component
@Aspect
@Slf4j
public class ServiceExcepHandler {
 
    @Around("@annotation(com.ahdruid.aop.annotation.ServiceExcepCatch)  || @within(com.ahdruid.aop.annotation.ServiceExcepCatch)")
    public ReturnMsg serviceExcepHandler(ProceedingJoinPoint proceedingJoinPoint) {
        ReturnMsg returnMsg = new ReturnMsg();
        try {
            returnMsg = (ReturnMsg) proceedingJoinPoint.proceed();
        } catch (Throwable throwable) {
            log.error("ServiceExcepHandler serviceExcepHandler failed", throwable);
            returnMsg.setError(BaseErrorEnum.SYS_ERROR_UNKNOW);
        }
        return returnMsg;
    }
}

使用時,在類或者方法上加上注解@ServiceExcepCatch

以上是“自定義注解和springAOP捕獲Service層異常并處理自定義異常的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌拉特前旗| 揭阳市| 西贡区| 东乌珠穆沁旗| 内乡县| 门头沟区| 尖扎县| 浙江省| 左贡县| 屏南县| 扎囊县| 宁德市| 沂水县| 云龙县| 海兴县| 锡林郭勒盟| 南漳县| 保山市| 霍城县| 太谷县| 太仆寺旗| 富裕县| 靖安县| 温州市| 商水县| 江山市| 武平县| 佛学| 会宁县| 灵寿县| 营山县| 广昌县| 措美县| 安图县| 林周县| 夏邑县| 墨脱县| 岢岚县| 广州市| 华宁县| 阿瓦提县|