次の記事では、Final in Java の概要を説明します。最後に、try および catch とともに使用されるコードのブロックです。最後に、例外が発生するかどうかに関係なく実行する必要があるコードのブロックが含まれます。 finally ブロック内に記述されたステートメントは、try ブロックでエラーが発生したかどうかに関係なく、常に実行されます。最後に、このブロックは、ファイルを開いていることによるメモリ エラーや、オープン接続や最大接続エラーによるデータベース エラーが発生しないようにする、ファイルやデータベース接続を閉じるのに適しています。また、コード内で発生したエラーが適切に処理されるようになります。
広告 このカテゴリーの人気コース 財務モデリングと評価 - 専門分野 | 51 コースシリーズ | 30 回の模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
構文:
try { //block of code that may cause an exception }
catch { //Handling the error occurred in try block }
finally { //code that should always execute }
ここでは、エラーをスローするか、エラーを引き起こして最終的に実行をブロックするエラーコードを記述します。
コード:
class ExampleFinally { public static void main(String args[]) { try{ int result = 1/0; System.out.println(result); catch(ArithmeticException e){ System.out.println("Divide by Zero Error"); } /* Finally block will always execute * even when we have created an error Block */ finally{ System.out.println("Gracefully Handling Error in Finally"); } System.out.println("Execution complete out of Try Catch Finally block"); } }
出力:
説明:
上記のプログラムでは、すでに数値をゼロから除算しています。
そして最後に try catch の後で、印刷されるすべての外側にコードのブロックを書きました。
もう 1 つの例では、try-catch-finally ブロック内で例外が発生しない場所を確認し、何が起こるかを確認します。
コード:
class ExampleFinally { public static void main(String args[]) { try { int result = 100/10; System.out.println(result); System.out.println("try code block"); } catch (Exception e) { System.out.println("catch code block"); } finally { System.out.println("finally code block"); } } }
出力:
説明:
上記のプログラムでは、エラーを引き起こす可能性のあるコードは一切記述していません。コードは try ブロック内で正常に実行されましたが、それでも、finally ブロックが実行され、内部でメッセージが出力されたことがわかります。
読み取りまたは書き込みのためにファイルを開くには、ファイルを開いてからストリームをバッファリングする必要があります。また、ファイル処理、IO、またはディスク エラーが発生しないように、開いたファイルを必ず閉じる必要があります。
コード:
import java.io.*; public class ReadingFromFile { public static void main(String[] args)throws Exception { FileReader fr = null; try { fr = new FileReader("/Users/cdp/Documents/testing/python virtual/java/myfile.txt");<> System.out.println("Opening the file"); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) System.out.println(line); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fr != null) { try { System.out.println("Closing the file "); fr.close(); } catch (IOException e) { System.out.println("unrecoverable Error occurred"); e.printStackTrace(); } } System.out.println("Exiting Finally block"); } } }
出力 (ファイルが存在しません):
出力 (ファイルが存在します):
上記の例では、ファイルを開いてファイル パスからバッファにそれを読み取ろうとしました。ファイルが存在し、ファイルを読み取ることができる場合、エラーはスローされず、ファイル バッファーが null でない場合は、finally ブロックで閉じられます。ファイルの読み取り中にエラーが発生した場合でも、たとえば何らかの権限が原因で、finally ブロックでもファイルが閉じられます。
これまで、最終的にブロックがいつ、どのように実行されるかを見てきました。
ただし、特定のシナリオでは、最終的にブロックが実行されない可能性があります。
Example:
import java.io.*; public class ReadingFromFile { public static void main(String[] args)throws Exception { FileReader fr = null; try { fr = new FileReader("/Users/cdp/Documents/testing/python virtual/java/myfile.txt"); System.out.println("Opening the file"); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) System.out.println(line); System.exit(0); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fr != null) { try { System.out.println("Closing the file "); fr.close(); } catch (IOException e) { System.out.println("unrecoverable Error occurred"); e.printStackTrace(); } } System.out.println("Exiting Finally block"); } } }
Output:
In the above example, we have used System.exit in the try block after reading the file, and it gets executed. If the System.exit gets executed without any exception, then there won’t be any control transfer to the finally block. However, in the case of an exception occuring before the System.exit, then finally block would surely get executed.
In the conclusion we can reach, it can finally play a very important role in gracefully exiting the program in case of errors. Finally, the block is important when you open a connection or buffered something, and it’s always important to close the connection or file opened. Finally, the block would even execute if there is an error or no error in the try block code. Finally, blocks are not mandatory but are useful in some situations.
以上がついにJavaでの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。