在Java程序設計中,異常處理是一項必不可少的功能。Java中的異常可以分為兩種:受檢異常和非受檢異常。受檢異常必須在方法簽名中聲明,而非受檢異常則不需要聲明。無論是受檢異常還是非受檢異常,都可以通過拋出和捕獲的方式進行處理。
異常拋出是指在代碼中出現了異常情況,程序顯式地拋出一個異常對象,告訴程序出現了什么問題。在Java中,使用throw關鍵字可以拋出異常。例如:
public void readData() throws IOException { // ... if (file == null) { throw new IOException("文件不存在"); } // ... }
在上面的代碼中,如果file為空,就會拋出一個IOException異常,該異常會被方法簽名中的throws聲明傳播出去,由調用者負責捕獲和處理。
異常捕獲是指程序在處理異常時,使用try-catch塊捕獲異常對象,進行相應的處理。catch塊中可以指定捕獲的異常對象類型,如果匹配,則執行對應的處理代碼。例如:
try { // ... } catch (IOException e) { // 處理IOException異常 } catch (Exception e) { // 處理其他類型的異常 }
在上面的代碼中,如果try塊中拋出了IOException異常,就會被第一個catch塊捕獲,然后執行對應的處理代碼。如果拋出的是其他類型的異常,就會被第二個catch塊捕獲。
異常拋出和捕獲的區別在于,拋出異常由發生異常的代碼段負責,而捕獲異常由處理異常的代碼段負責。拋出異常的代碼段可以直接拋出異常對象,也可以調用其他代碼段拋出異常;而處理異常的代碼段需要使用try-catch塊捕獲異常對象,并進行相應的處理。