Apex 的異常處理


Apex 中的異常處理

在 Apex 中,和其他語言類似,對於異常處理通常使用 try、catch、finally、throw 等關鍵字。

對於每一個 try 代碼段,必須要有至少一個 catch 或 finally 代碼段,而 finally 代碼段最多只能有一個。

finally 代碼段是必然會執行的代碼段,無論異常有沒有發生。

異常處理的結果

當發生異常后,代碼執行會終止,而在此異常之前所有的數據庫 DML 操作都會回滾,無論是否已經在此之前設定了“保存點(SavePoint)”。

與此同時,相關的錯誤信息會寫入日志,用戶可以在“設置”界面下的 “Debug Logs” 選項中進行查看。錯誤信息也會顯示在用戶界面中。

異常類型

系統定義的異常類型有:

  • DmlException:關於數據庫操作的異常
  • ListException:關於列表操作的異常
  • NullPointerException:關於空指針的異常
  • QueryException:關於查詢語句的異常
  • SObjectException:關於SObject對象的異常

它們共有的方法包括:

  • getCause():給出異常原因
  • getLineNumber():給出發生異常的行數
  • getMessage():給出異常的詳細信息
  • getStackTraceString():給出異常發生的棧信息
  • getTypeName():給出異常的類型,比如 DmlException、NullPointerException 等

對於每個異常類型,還有自己的方法,比如 DmlException 就擁有 getDmlFieldNames()、getDmlMessage() 等方法。

標准格式

try {
    // 執行操作,有可能發生異常
} catch(DmlException e) {
    // 捕捉 DML 相關的異常
} catch(SObjectException e) {
    // 捕捉 SObject 相關的異常
} catch(Exception e) {
    // 發生異常之后,在此進行后續處理
} finally {
    // 其他的操作,必然會執行的代碼段
}

如果要捕捉不同的異常類型,要將“一般異常類型”(Exception)放在最后。

自定義異常類型

對於系統自定義的異常類型,只能使用 catch 來捕捉,而不能使用 throw 語句來拋出。開發者也可以定義自己的異常類型。

自定義異常類型也是一個類,必須繼承 Exception 類或其任何子類。

自定義異常類型的名字必須以 Exception 結尾。

標准格式:

public class BaseException extends Exception {}

public class ExampleException extends BaseException {}

...

// 拋出異常類
throw new BaseException();

// 拋出異常類並加上錯誤信息
new ExampleException('An error occurred.');

// 拋出異常類並嵌套異常類變量
try { 
    throw new BaseException('First exception'); 
} catch (BaseException e) { 
    throw new ExampleException('Thrown with inner exception', e);
} 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM