これら2つの方法を比較してください。
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
)以外に、2つのメソッドの間に実際的な違いはありますか?
明確にするために:これは例外処理への恐ろしいアプローチであり、実行すべきではないことを認識しています。