通常、接続を開いている場合は、try-catch-finally を実行します。
try {
doSomething();
} catch(Exception e) {
// handle the exception
} finally {
close();
}
私のシナリオでは、2 つのキャッチと 2 つの異なるクロージングがあります。通常の場合は close() で、StrangeException がスローされた場合は closeStrange() です。
私はこのようなものを思いついた:
try {
doSomething();
} catch(StrangeException e) {
closeStrange();
throw new MyExc(e);
} catch(Exception e) {
close();
throw new MyExc(e);
}
close();
この状況をこのように処理すれば安全かどうかを知りたいです。
編集:
おそらく明確ではありませんでした。クロージングの 1 つだけを呼び出したいのです。closeStrange() StrangeException がスローされた場合、close() 別の例外がスローされた場合、または何もスローされなかった場合。