繁体   English   中英

使用aspectJ在spring中记录异常?

[英]log the exception in spring using aspectJ?

请不要犹豫,编辑问题或询问有关任务的更多细节。

我知道我可以logArithmeticException使用下面的方法aspectJ作为,

public void afterThrowingAspect(){
    System.out.println("This is afterThrowingAspect() !");      
    int i=2/0;
    System.out.println("i value : "+i);
}

AspectJ类有,

@AfterThrowing(pointcut = "execution(* com.pointel.aop.test1.AopTest.afterThrowingAspect(..))",throwing= "error")
public void logAfterError(JoinPoint joinPoint,Throwable error) {
    System.out.println("Hi jacked Method name : " + joinPoint.getSignature().getName());
    log.info("Method name : " + joinPoint.getSignature().getName());
    log.info("Error report is : " + error);

}

通常我可以使用TRYCATCH块处理异常,并将每个CATCH块中的错误log为,

public void someMehtod(){
    try{        
        int i=2/0;
        System.out.println("i value : "+i);
    }catch{ArithmeticException err){
        log.info("The exception you got is : " + err);
    }
}

但是我不喜欢在项目的所有java类中单独使用每个catch块进行logging ,例如,

log.info("The exception you got is : " + err); 

我想使用aspectJ类在我的应用程序中进行CATCH块内的logging

希望你们都明白我的问题。谢谢。

可以简单地从代码中删除try / catch,只需在您的方面记录异常即可。

public void someMehtod(){
        int i=2/0;
        System.out.println("i value : "+i);
}

因为你没有在方面重新抛出异常,所以它不会冒泡。 虽然这是可能的,但我强烈建议您多考虑一下这里要做的事情。 为什么需要记录抛出异常的事实? 例外不仅仅是错误,而是可以在正常的代码旅程中发生。 只记录异常名称不太可能帮助您调试问题。 因此,您可能需要为每个catch块定制一条日志消息。 如果您确实发现了重复,则可以创建一种方法来注销结果。

希望这可以帮助,

标记

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM