logo

Javaがついにブロックされる

Javaがついにブロックされる 接続を閉じるなどの重要なコードを実行するために使用されるブロックです。

Java のfinally ブロックは、例外が処理されるかどうかに関係なく、常に実行されます。したがって、例外が発生したかどうかに関係なく、出力する必要があるすべての必要なステートメントが含まれています。

finally ブロックは try-catch ブロックの後に続きます。

Finallyブロックのフローチャート

Javaがついにブロックされる

注: 例外を処理しない場合、プログラムを終了する前に、JVM は最終ブロック (存在する場合) を実行します。

なぜ Java の Final ブロッ​​クを使用するのでしょうか?

  • Javaのfinallyブロックを使用して「」を入れることができます 掃除 ' ファイルを閉じる、接続を閉じるなどのコード。
  • 出力する重要なステートメントは、finally ブロックに配置できます。

いよいよJavaの使い方

Javafinallyブロックが使用できるさまざまなケースを見てみましょう。

ケース1:例外が発生しない場合

Java プログラムが例外をスローせず、try ブロックの後にfinally ブロックが実行される以下の例を見てみましょう。

TestFinallyBlock.java

 class TestFinallyBlock { public static void main(String args[]){ try{ //below code do not throw any exception int data=25/5; System.out.println(data); } //catch won't be executed catch(NullPointerException e){ System.out.println(e); } //executed regardless of exception occurred or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of phe code...'); } } 

出力:

Javaがついにブロックされる

ケース 2: 例外が発生したが、catch ブロックで処理されなかった場合

次の例を見てみましょう。ここで、コードは例外をスローしますが、catch ブロックはそれを処理できません。それにもかかわらず、finally ブロックが try ブロックの後に実行され、プログラムが異常終了します。

TestFinallyBlock1.java

 public class TestFinallyBlock1{ public static void main(String args[]){ try { System.out.println('Inside the try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //cannot handle Arithmetic type exception //can only accept Null Pointer type exception catch(NullPointerException e){ System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

出力:

Javaがついにブロックされる

ケース 3: 例外が発生し、catch ブロックによって処理される場合

例:

Java コードが例外をスローし、catch ブロックが例外を処理する次の例を見てみましょう。その後、try-catch ブロックの後に、finally ブロックが実行されます。さらに、コードの残りの部分も通常どおり実行されます。

TestFinallyBlock2.java

 public class TestFinallyBlock2{ public static void main(String args[]){ try { System.out.println('Inside try block'); //below code throws divide by zero exception int data=25/0; System.out.println(data); } //handles the Arithmetic Exception / Divide by zero exception catch(ArithmeticException e){ System.out.println('Exception handled'); System.out.println(e); } //executes regardless of exception occured or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

出力:

Javaがついにブロックされる

ルール: 各 try ブロックには 0 個以上の catch ブロックを含めることができますが、finally ブロックは 1 つだけです。

注: (System.exit() を呼び出すか、プロセスを中止させる致命的なエラーを引き起こすことによって) プログラムが終了すると、finally ブロックは実行されません。