public Foo doDangerousStuff() throws Exception {
try {
dangerousMethod();
return new Foo();
} catch (Exception e) {
throw e;
} finally {
mustBeCalledAfterDangerousMethod();
}
}
Это ведет себя иначе, чем если бы мы опускали предложение catch?
public Foo doDangerousStuff() throws Exception {
try {
dangerousMethod();
return new Foo();
} finally {
mustBeCalledAfterDangerousMethod();
}
}
[edit] Чтобы очистить путаницу, да, блок catch
ничего не делает, кроме повторного выброса исключения. Мне было интересно, вызвало ли это какой-то другой порядок в том случае, когда вызывается блок finally
(предположим, что вызванное исключение поймано вызывающим), но из того, что я делаю из ответов, это не так.