我有问题。
即:我正在使用spring aop来处理异常。其中一些是我的异常,如果外部供应商提供的数据损坏,则会抛出这些异常。我在指向某种类型的方面处理它们。比如这个。
@AfterThrowing(
pointcut =
"execution(*myClass.myDataProcessingMethod(..))",
throwing = "ex"
)
public void myAspectMethod(MyException ex) {
...
}
但是当我的数据处理工作中发生了一些不好的事情,并且它不是错误的数据而是我的逻辑中的错误时,我希望在实例上得到通知。所以我有第二个方面。
@AfterThrowing(
pointcut =
"execution(*myClass.myDataProcessingMethod(..))",
throwing = "ex"
)
public void myAspectMethod(Exception ex) {
extraInformingService.informAdamAtOnce("shitjustgotreal");
}
但是抛出MyException时会触发这两个方面,因为MyException是Exception的实例。
有没有办法只触发指向MyException的方法?
答案 0 :(得分:1)
最简单的,虽然不是很优雅的版本是这样的:
@AfterThrowing(
pointcut =
"execution(*myClass.myDataProcessingMethod(..))",
throwing = "ex"
)
public void myAspectMethod(Exception ex) {
if(!ex instanceof Myexception){
extraInformingService.informAdamAtOnce("shitjustgotreal");
}
}