4

请不要犹豫,编辑问题或询问有关 questin 的更多详细信息。

我知道我可以使用aslogArithmeticException以下方法,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);

}

通常我可以使用TRYandCATCH块和每个块中log的错误来处理异常,CATCH

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);
    }
}

但是我不喜欢在我的项目的所有类中单独对logging每个catch块做类似的事情,比如,java

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

我想使用该类在我的应用程序中执行logging内部CATCH块。aspectJ

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

4

1 回答 1

0

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

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

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

希望这可以帮助,

标记

于 2013-10-14T20:44:32.483 回答