[英]log the exception in spring using aspectJ?
请不要犹豫,编辑问题或询问有关任务的更多细节。
我知道我可以log
的ArithmeticException
使用下面的方法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);
}
通常我可以使用TRY
和CATCH
块处理异常,并将每个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.