在AspectJ中,我想吞下一个例外。
@Aspect
public class TestAspect {
@Pointcut("execution(public * *Throwable(..))")
void throwableMethod() {}
@AfterThrowing(pointcut = "throwableMethod()", throwing = "e")
public void swallowThrowable(Throwable e) throws Exception {
logger.debug(e.toString());
}
}
public class TestClass {
public void testThrowable() {
throw new Exception();
}
}
上面,它没有吞下异常。 testThrowable()的调用者仍然收到异常。我希望来电者不要收到例外。怎么办呢? 感谢。
答案 0 :(得分:6)
我认为不能在AfterThrowing
中完成。您需要使用Around
。
答案 1 :(得分:5)
我的解决方案!
@Aspect
public class TestAspect {
Logger logger = LoggerFactory.getLogger(getClass());
@Pointcut("execution(public * *Throwable(..))")
void throwableMethod() {}
@Around("throwableMethod()")
public void swallowThrowing(ProceedingJoinPoint pjp) {
try {
pjp.proceed();
} catch (Throwable e) {
logger.debug("swallow " + e.toString());
}
}
}
再次感谢。