【发布时间】:2020-10-31 03:07:57
【问题描述】:
问题
我想对抛出异常的事件做出反应。所以如果有人写
throw new FooException();
系统应该通知我,以便我能够对该事件做出反应。
我还将接受建议解决此问题的框架或工具的答案,包括字节码操作。
详情
- 它必须适用于任何异常;所以
Exception的子类,包括RuntimeException。我对Errors 不感兴趣。 - 它还必须触发已捕获异常,无论它发生在代码库的哪个位置(包括 JDK 内部)。
如果有人这样做
try {
foo();
} catch (FooException e) {
...
}
我也希望能够对此做出反应,而无需修改...的源代码。
因此,围绕主流程的 try-catch-em-all 不起作用,它不会捕获已捕获的异常。
Thread.setDefaultUncaughtExceptionhandler(...) 也一样,不会解决问题。
请不要建议调整我的设计,或者这可能是一个 XY 问题,我知道并且主要是问,因为我很好奇如何实现这一点。
【问题讨论】: