比較這兩種方法:鑄造異常在Java中
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;
}
}
}
從方法簽名
除了(巴可宣佈throws SomeSubException
代替throws SomeSuperException
),有兩種方法之間的任何實際的區別嗎?
要清楚:我知道這是一種異常處理的可怕方法,不應該這樣做!
這實際上取決於,如果子異常鏈接到實現的細節,可能是一個好主意,拋出超級異常來隱藏這些細節給調用者。 – assylias 2012-04-27 12:53:21
那是真的;)... – Thkru 2012-04-27 12:54:04
@assylias:所以你說這是規則的例外嗎? :-) – atk 2012-04-27 12:54:52