この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Apex での例外

例外は、コード実行の正常な流れを中断させるエラーやその他のイベントが発生したことを通知します。throw ステートメントは例外の生成に使用され、trycatch、および finally ステートメントは例外から適切に復旧するために使用されます。

コードでエラーを処理するには、System.assert コールのようなアサーションの使用や、エラーコードや Boolean 値を返すなど、さまざまな方法がありますが、なぜ例外を使うのでしょうか。例外を使用する利点は、エラー処理が簡素化されることです。例外は、コールされたメソッドからコール側に必要な数のレベルで生成されて放置され、catch ステートメントが見つかるとエラーが処理されます。これにより、各メソッドでエラーを処理するコードを記述する必要がなくなります。また、finally ステートメントを使用することで、変数のリセットやデータの削除など、例外からの復旧を一元的に行うことができます。

例外が発生すると何が行われるか

例外が発生すると、コードの実行は停止し、例外発生より前に処理された DML 操作はロールバックされてデータベースにはコミットされません。例外はデバッグログに記録されます。未対応の例外、つまり、コードでキャッチされない例外の場合、Salesforce から開発者に例外情報を記載したメールが送信され、エンドユーザの Salesforce ユーザインターフェースにエラーメッセージが表示されます。

未対応の例外メール

LastModifiedBy 項目で指定された開発者に対して、Apex スタック追跡と顧客の組織およびユーザ ID を記載した、エラーを通知するメールが送信されます。他の顧客データはレポートに記載されません。

重複する例外が発生すると、開発者の受信トレイが同じエラーに関するメールで溢れないように、最初のメールのみが送信され、それ以降の例外メールは抑制されることがあります。メールの抑制は、同期的に実行される Apex コードが対象です。Apex 一括処理や future メソッド (@future のアノテーション付きメソッド) など非同期 Apex の場合は、重複する例外のメールが抑制されません。

メモ

ユーザインターフェースでの未対応の例外

エンドユーザが標準のユーザインターフェースを使用中に Apex コードで例外が発生した場合、未対応の例外を示すテキストを含むエラーメッセージがページに次のように表示されます。

[New Merchandise (新しい商品)] ページに表示された処理されない例外