比较这两种方法:
void foo() throws SomeSuperException {
try {
//...
} catch (SomeSuperException e) {
if (e instanceof SomeSubException) {
throw e;
}
}
}
void bar() throws SomeSubException {
try {
//...
} catch (SomeSuperException e) {
if (e instanceof SomeSubException) {
throw (SomeSubException) e;
}
}
}
除了方法签名( bar 可以声明throws SomeSubException
而不是throws SomeSuperException
),这两种方法之间有什么实际区别吗?
需要明确的是:我知道这是一种可怕的异常处理方法,不应该这样做!