例外処理例外AOP

シーン:共通の例外処理、コードクリーナーと直接試し{}キャッチ(){}を回避

 

使用します。 

1.依存性:

       <依存性> 
            <のgroupId> org.springframework.boot </のgroupId> 
            <たartifactId>ばねブートスタータAOP </たartifactId> 
        </依存>

 

2.カットは、直接法を避ける - >これは、その後スライスutilsの、exceptionHandlerUtilsを使用しています

exceptionHandlerUtils:

@ SLF4J 
@Component 
パブリック クラスExceptionHandlingUtils { 
   
   
    公共 ボイドthrowDAOException(例外e){ 
        e.printStackTrace(); 
        log.error( "によって引き起こさは、MySQLに予約動作に失敗しました:{}" 、e.getMessage()、E)。
        スロー 新しいDAOException(e.getMessage()、e)を、
    } 
    
    公共 ボイドprintEmailException(例外e、文字列対象文字列に){ 
        e.printStackTrace(); 
        log.errorは( "*** EmailExceptionは、によって引き起こされる、*** {} {}にメールを送信できませんでした:{}" は、被験体に、e.getMessage())。
    } 
    
    公共 のボイドthrowJSONConvertException(例外e){ 
        e.printStackTrace(); 
        log.error( "によって引き起こさ読み出しJSONツリーに遭遇する例外:{}" 、e.getMessage()、E)。
        スロー 新しいJSONConvertException(e.getMessage()、e)を、
    } 
}

 

3. AOPのセクション:

ExceptionHandlingAspect
@Aspect 
@Configuration 
@ SLF4J 
パブリック クラスExceptionHandlingAspect { 

    @value( "$ {mail.common.from}" 民間からの文字列。
    @value( "$ {mail.common.to}" プライベート文字列に、
    @Autowired 
    プライベートMesgHelper mesgHelper。
    
/ ** 
 * @param ジョインポイント
 * @paramの元、获取的异常
  * / 
    @AfterThrowing(ポイントカット = "実行(* com.icil.elsa.auo.common.util .. *(..))"、投げ= " EX」公共 無効afterThrowingCommon(ジョインポイントジョインポイント、のThrowable EX)は{ 
        log.error( "例外は{}によって引き起こされ、検出された" 、ex.getMessage())。
        もし(元のinstanceof DAOException){ 
            commonProcess(EX)。
        } 
        そう であれば(EX のinstanceof RestClientException){ 
            commonProcess(EX)。
        } 
        そう であれば(EX のinstanceof にConnectionException){ 
            commonProcess(EX)。
        } 
     
    } 
   
    
    プライベート ボイドcommonProcess(ThrowableのEX){ 
        log.error("名前の処理例外{}" 、ex.getClass()getSimpleName())。
        オブジェクト[]パラスの = {DateUtils.getBeiJingDateLoc()}。
        文字列被写体 = mesgHelper.getMessage( "exception.handling.common.subject"、パラス、NULL ); 
        ストリングexSimpleName = ex.getClass()getSimpleName()。
        文字列本体 = ex.getMessage()。
        オブジェクト[]のparams = {exSimpleName、本体}。
        文字列の内容 = mesgHelper.getMessage( "exception.handling.common.content"、paramsは、NULL ); 
        MailUtils.sendMail(主題、内容から、まで)。
    } 
}

 

4.: 

試す{
  // 何かやっ 
} キャッチ(例外e){ 
exceptionHandlingUtils.throwDAOException(e)を、
}  

 

おすすめ

転載: www.cnblogs.com/lshan/p/11271827.html