我們可以透過在 java 中插入 try-catch 區塊來處理程式碼中的異常。在本文中,我們將了解如何透過使用多個 catch 區塊或 catch 區塊的多個參數來處理單一 try 區塊的多個異常。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
Java 中多個 Catch 區塊的語法如下:
語法 1:簡單的 try-catch 區塊
try { //code snippet which might responsible for exceptions } catch (<type_of_exception> <name_of_exception_object>) { //here we handle exceptions }
語法 2:有多個 catch 區塊的 try-catch 區塊
try { //code snippet which might responsible for exceptions } catch (<type_of_exception> <name_of_exception_object>) //catch block 1 { //here we handle exceptions } catch (<type_of_exception> <name_of_exception_object>) //catch block 2 { //here we handle exceptions } catch (<type_of_exception> <name_of_exception_object>) //catch block 3 { //here we handle exceptions }
語法 3:try-catch 區塊,其中多個 catch 語句作為 catch 區塊的參數
try { //code snippet which might responsible for exceptions } catch (<type_of_exception1> | <type_of_exception2> | <type_of_exception3> <name_of_exception_object>) { //here we handle exceptions }
首先,我們需要在移動到 catch 區塊之前檢查 try 區塊。
它包含可能導致異常的程式碼片段。因此,每當您懷疑程式碼可能導致異常時,請將該程式碼片段放入 try 區塊中。 try 區塊至少需要一個 catch 區塊。
它包含處理編寫在其對應 try 區塊內的程式碼可能發生的異常的程式碼片段。現在如果有多個異常,該如何處理?
您可以採取兩種方式:
我們也可以在建構函式中編寫 try-catch 區塊,它將如預期般運作。在下面的範例中,我們將在 try 建構函數中編寫程式碼:try 區塊將產生算術異常,並在 catch 區塊中處理。
public class MultipleCatchBlockInConstructor { MultipleCatchBlockInConstructor() { try { int num=6/0; } catch(ArrayIndexOutOfBoundsException excp) { System.out.println("Exception is : "+excp); } catch(ArithmeticException excp) { System.out.println("Exception is : "+ excp); } } public static void main(String[] args) { MultipleCatchBlockInConstructor mc=new MultipleCatchBlockInConstructor(); } }
輸出:
在本節中,我們將討論許多程式碼範例。您應該自己嘗試此程式碼,並將輸出與給定的輸出進行比較。
這是一個多 catch 區塊的簡單範例,我們編寫了一條語句,該語句將在 try 區塊內產生異常,該異常將由三個 catch 區塊中對應的 catch 區塊處理。
代碼:
public class MultipleCatchBlockInJava { public static void main(String[] args) { try{ System.out.println("start of try block"); int num = 6/0; } catch(ArithmeticException e) { System.out.println("divide by zero exception "); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBounds Exception occurs"); } catch(Exception e) { System.out.println("Any other excpetion"); } System.out.println("end of try-catch block"); } }
輸出:
在此範例中,我們透過 try 和 catch 區塊說明了陣列的越界異常處理。
代碼:
public class MultipleCatchBlockInJava { public static void main(String[] args) { try{ System.out.println("start of try block"); int arr[]=new int[6]; System.out.println(arr[12]); //we want to access 12th element of array which does not exist as size is of 6 } catch(ArithmeticException e) { System.out.println("divide by zero exception"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Array IndexOutOfBounds Exception occurs"); } catch(Exception e) { System.out.println("Any other exception"); } System.out.println("end of try-catch block"); } }
輸出:
在此範例中,我們將了解 catch 區塊如何處理空指標。另外要注意的是,try 區塊中存在多種異常情況,但一旦程式流程到達第一個異常產生語句(這裡為空指標異常),它會立即移出 try 區塊並在 catch 區塊中搜尋異常處理程序。 try 區塊內的其他異常生成語句(此處為陣列索引越界異常)將被忽略。
代碼:
public class MultipleCatchBlockInJava { public static void main(String[] args) { try{ System.out.println("start of try block"); String str=null; System.out.println(str.length()); //we want to get length of a null string int arr[]=new int[6]; System.out.println(arr[12]); //we want to access 12th element of array which does not exist as size is of 6 } catch(ArithmeticException e) { System.out.println("divide by zero exception"); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Array IndexOutOfBounds Exception occurs"); } catch(NullPointerException e) { System.out.println("Null pointer Exception occurs"); } System.out.println("end of try-catch block"); } }
輸出:
在此範例中,我們將檢查單一 catch 區塊的多個參數如何處理異常。
代碼:
public class MultipleCatchBlockInJava { public static void main(String[] args) { try{ System.out.println("start of try block"); String str=null; System.out.println(str.length()); //we want to get length of a null string int arr[]=new int[6]; System.out.println(arr[10]); //we want to access 10th element of array which does not exist as size is of 6 } catch(ArithmeticException | ArrayIndexOutOfBoundsException | NullPointerException e ) { System.out.println("Code is throwing " + e); } System.out.println("end of try-catch block"); } }
輸出:
我們從java程式角度對多個catch區塊的學習到此結束。總結一下:每當您需要處理多個異常時,您可以將它們寫入多個 catch 區塊中。或者,對於 java 7 及更高版本,您可以在參數單一 catch 區塊中編寫多個異常,程式流程將自動選擇它。另外,為了更好地理解,您應該自己編寫程式碼,這一點很重要。
以上是Java 中的多個 Catch 區塊的詳細內容。更多資訊請關注PHP中文網其他相關文章!