首頁 > Java > java教程 > 終於在Java中

終於在Java中

WBOY
發布: 2024-08-30 16:15:28
原創
627 人瀏覽過

以下文章提供了 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
}
登入後複製

Finally 在 Java 中如何運作?

這裡我們將拋出一個錯誤或編寫一個錯誤的程式碼,這將導致錯誤並最終阻止執行。

代碼:

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");
}
}
登入後複製

輸出:

終於在Java中

說明:

在上面的程式中,我們已經將一個數字除以零。

  • 優雅地處理 Final 中的錯誤。

在 try catch finally、block 之後,我們在列印的所有內容之外編寫了一段程式碼。

  • 在 Try Catch Final 區塊中執行完成。

另一個例子,我們將看到 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");
}
}
}
登入後複製

輸出:

終於在Java中

說明:

在上面的程式中,我們沒有寫任何可能導致錯誤的程式碼。程式碼在 try 區塊內成功執行,但是您仍然可以看到 finally 區塊被執行並在裡面列印了訊息。

  • 最後程式碼區塊

最後,Java 程式中的區塊使用

打開文件進行讀取或寫入需要打開一個文件,然後緩衝流,並且我們應該確保關閉打開的文件,這樣我們就不會出現任何文件處理、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");
}
}
}
登入後複製

輸出(檔案不存在):

終於在Java中

輸出(檔案存在):

終於在Java中

在上面的範例中,我們嘗試開啟一個檔案並將其從檔案路徑讀入緩衝區。如果文件存在並且我們能夠讀取該文件,則不會拋出任何錯誤,並且如果文件緩衝區不為空,則文件緩衝區將在finally區塊中關閉。即使讀取檔案時發生錯誤,例如由於某些權限,那麼在finally區塊中檔案也會關閉。

意義

  • 最後,區塊必須始終與 try 區塊關聯;我們不能在沒有 try 區塊的情況下編寫 use finally 區塊。你在finally區塊中寫的語句都會被執行,無論是否發生錯誤,總是不依賴try塊程式碼。
  • 最後,該區塊不是強制區塊;我們可以編寫沒有finally 區塊的try 和catch 區塊。假設我們只想捕獲任何有問題的用戶輸入的錯誤。
  • 如果仍然沒有發生任何錯誤,最後該區塊將被執行。如果有任何錯誤,則執行第一個 catch 區塊,然後執行finally。
  • 所有異常在finally 區塊中都有相同的行為。對於所有異常,該區塊都會正常執行。
  • 最後,即使 try 區塊中有break、return 或 continue 語句,該區塊也會執行。

什麼時候Finally不會執行?

到目前為止,我們已經了解了finally 區塊何時以及如何執行。

但是在某些情況下,finally 區塊可能不會被執行。

  • There could be a thread getting executed; it is most likely to be the main thread where program execution is happening, and abruptly it dies, then the finally block won’t be getting executed.
  • If in the try or catch block we have used System class with the exit method that is System.exit(), then the whole system would exit, and no control will be transferred to the next block of code.
  • If finally only throws an exception, then the program would not exit gracefully but exit abruptly.

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:

終於在Java中

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.

Conclusion

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中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板