请不要犹豫,编辑问题或询问有关任务的详细信息。
我知道我可以log
使用ArithmeticException
作为aspectJ
的{{1}},
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);
}
通常我可以使用TRY
和CATCH
块以及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
块。
希望你们都明白我的问题。谢谢。
答案 0 :(得分:0)
可以简单地从代码中删除try / catch,只需在您的方面记录异常。
public void someMehtod(){
int i=2/0;
System.out.println("i value : "+i);
}
因为你没有在方面重新抛出异常,所以它不会冒泡。虽然这是可能的,但我强烈建议您多考虑一下这里要做的事情。为什么需要记录抛出异常的事实?例外不仅仅是错误,而是可以在正常的代码旅程中发生。只记录异常名称不太可能帮助您调试问题。因此,您可能需要为每个catch块定制一条日志消息。如果你确实发现重复,你可以创建一个方法来注销结果。
希望这有帮助,
标记