Javaがついにブロックされる 接続を閉じるなどの重要なコードを実行するために使用されるブロックです。
Java のfinally ブロックは、例外が処理されるかどうかに関係なく、常に実行されます。したがって、例外が発生したかどうかに関係なく、出力する必要があるすべての必要なステートメントが含まれています。
finally ブロックは try-catch ブロックの後に続きます。
Finallyブロックのフローチャート
注: 例外を処理しない場合、プログラムを終了する前に、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...'); } }
出力:
ケース 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...'); } }
出力:
ケース 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...'); } }
出力: