比较这两种方法:铸造异常在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