以下文章提供了 Java 中的 Final 的概述。最後是與 try 和 catch 一起使用的程式碼區塊。最後包含無論是否發生異常都必須執行的程式碼區塊。無論 try 區塊中是否發生錯誤,finally 區塊中編寫的語句總是會執行。最後,該區塊非常適合關閉檔案或資料庫連接,確保您不會因開啟檔案而出現任何記憶體錯誤,也不會因開啟連接或最大連接錯誤而出現資料庫錯誤。它還確保程式碼中發生的任何錯誤都會得到妥善處理。
廣告 該類別中的熱門課程 財務建模與估值 - 專業化 | 51 課程系列 | 30 次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
文法:
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 finally、block 之後,我們在列印的所有內容之外編寫了一段程式碼。
另一個例子,我們將看到 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"); } } }
輸出(檔案不存在):
輸出(檔案存在):
在上面的範例中,我們嘗試開啟一個檔案並將其從檔案路徑讀入緩衝區。如果文件存在並且我們能夠讀取該文件,則不會拋出任何錯誤,並且如果文件緩衝區不為空,則文件緩衝區將在finally區塊中關閉。即使讀取檔案時發生錯誤,例如由於某些權限,那麼在finally區塊中檔案也會關閉。
到目前為止,我們已經了解了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中文網其他相關文章!