finally
の目的は、いくつかの命令またはクリーンアップ コードが実行されることを保証することです。finally
しかし、catch ブロックの後にコードを使用または配置することの実際の違いは何ですか。
つまり、使用する必要がある場合の例を教えてくださいfinally
。そうしないと、コードがまったく実行されない可能性があります。
5 に答える
最後に、catch ブロックで何が起こったかに関係なく実行します。いくつかのケースが存在します。
catch(Exception E)
{
...
throw new OtherException(BetterMessage, E);
}
また
catch { return null; }
また
catch { SomeMethodThatWillThrowAnException(); }
したがって、Catch ブロックを終了するために例外を返すかスローしても、finally ブロックは実行されますが、try-catch の直後のコードは無視されます。
最後に何があっても実行します。
一例
public void test() {
try {
int x = 0;
return;
} catch(Exception ex) {
ex.printStackTrace();
} finally {
System.out.println("Hello from finally");
}
System.out.println("Hello from after catch");
}
この場合、"Hello from after catch" は出力されませんが、"Hello from finally" は出力されます。
投げてキャッチしても、finally ブロックは何があっても発火します。たとえば、catch によってプロセスが終了したり、アプリケーションがクラッシュしたりする可能性がある場合など、finally ブロック内にない catch の後に配置されたコードは実行されない可能性があります。
ブロックは、finally
例外がスローされるかどうかに関係なく実行されます。
あなたの質問は、を使用することと、ブロックの後にコードを配置することの違いは何finally
catch
ですか。例外がスローされた場合、ブロックの後のコードはcatch
実行されません。コードをfinally
ブロックに配置すると、ブロックされます。
キャッチできない例外が発生する可能性があります。finally
ブロックは、予期しない例外がスローされた場合でも、ブロック内のコードの実行を保証します。