あなたは言語を指定していません、そして私は言語を知らないので、私は一般的に答えます。
あなたはそれをすることはできません。共通のコードが必要な場合は、に入れますfinally
。または、一部のキャッチケースに対してのみ実行する必要がある場合は、そのコードをそれぞれのケースにコピーできます。コードが大きく、冗長性を避けたい場合は、コードを独自の関数に入れることができます。それでコードの可読性が低下する場合は、try / catchブロックをネストできます(少なくともJavaとC ++では。言語についてはわかりません)。Javaでの例を次に示します。
class ThrowingException {
public static void main(String... args) {
try {
try {
throw new RuntimeException();
} catch(RuntimeException e) {
System.out.println("Hi 1, handling RuntimeException..");
throw e;
} finally {
System.out.println("finally 1");
}
} catch(Exception e) {
System.out.println("Hi 2, handling Exception..");
} finally {
System.out.println("finally 2");
}
}
}
これは印刷されます:
Hi 1, handling RuntimeException..
finally 1
Hi 2, handling Exception..
finally 2
共通のコードを外側のcatchブロックに入れます。ネストされたバージョンを使用してこれを行うと、catchブロックで古いものを明示的に再スローせずに例外が発生した場合も処理されます。それはあなたが望むものにさらに良く合うかもしれませんが、そうでないかもしれません。