我需要执行一些初始化并在发生任何异常时进行清理。我仍然喜欢将异常传递给调用者。问题是我现在必须将这个方法声明为throws Throwable
,然后我必须在调用者中明确地处理这个throwable,就好像所有的过程都不隐含地抛出Throwable
一样。愚蠢是不是?这样做的执行清理并将异常传递给调用者
try {
init_step1();
init_step2();
}
catch (Throwable th) {
clean();
throw th;
}
init_step1()和init_step2()可能会抛出一个Throwable,我必须确保数据的一致性。我希望调用者只处理检查的异常。这就是为什么他们称他们为“检查”,不是吗? – milan 2011-01-29 08:59:49