Exception

  • Apex ガバナ制限
  • CPU time limit exceeded
    「Salesforce サーバの最大 CPU 時間」に抵触した場合に出力されるものです。Apex ガバナ制限は “Apex” という名前こそついてますが、プラットフォームの制限でございますためフローやプロセスの処理も対象となります。「Salesforce サーバの最大 CPU 時間」では同期処理 (通常のフロー/プロセスの処理) では処理時間が 10 秒まで、非同期処理 (スケジュール実行される処理等) では 60 秒までという制限があります。そのため、設計が複雑になっている等で処理時間がかかる場合には当該のエラーが出力される場合があります。
  • System.LimitException: Too many SOQL queries: 101
    コンテキストで合計 100 個までの SOQL クエリを実行することができるガバナ制限に達した場合に、エラーが表示されます。
    ひとつの呼び出し、または、コンテキストから発動されたトリガ内のすべての SOQL クエリは、100 の制限にカウントされます。
  • Too many DML rows: 10001
    DMLを行うレコードの総数が10000超えると出るエラーです。バッチの場合では、executeメソッドの開始と終了の間のレコード総数をカウントするようです。なので、複数オブジェクトのレコードを挿入する場合、その総数をカウントするとなります。
  • UNABLE_TO_LOCK_ROW:unable to obtain exclusive access to this record or 1 records: xxxxxxxxxx
    デッドロックになっている場合に発生します。また、データを更新する際に参照関係にあるデータもロックを掛けるので、バッチで長時間更新をかけているものがあると、それが参照関係にあるデータもロックをかけているので、別のオブジェクトも巻き込まれてロックさているので、書き込みができなくなります。

共通例外メソッド

名前 引数 戻り値 説明
getCause - Exception 例外オブジェクトとして例外の原因を返します。
getLineNumber - Integer 例外が発生した箇所の行番号を返します。
getMessage - string ユーザに表示されるエラーメッセージを返します。
getStackTraceString - string 発生した例外のスタック追跡を文字列として返します。
getTypeName - string DmlException、ListException、MathException などの例外型を返します。
initCause Exception cause Void この例外の原因が設定されていない場合は設定します。
setMessage String s Void ユーザに表示されるエラーメッセージを設定します。

使用例

Account[] accts = new Account[]{new Account(billingcity = 'San Jose')};
try {
    insert accts;
} catch (System.DmlException e) {
    System.debug(e.getMessage() ); 
}