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() );
}