Apex での例外
例外は、コード実行の正常な流れを中断させるエラーやその他のイベントが発生したことを通知します。throw ステートメントは例外の生成に使用され、try、catch、および finally ステートメントは例外から適切に復旧するために使用されます。
コードでエラーを処理するには、System.assert コールのようなアサーションの使用や、エラーコードや Boolean 値を返すなど、さまざまな方法がありますが、なぜ例外を使うのでしょうか。例外を使用する利点は、エラー処理が簡素化されることです。例外は、コールされたメソッドからコール側に必要な数のレベルで生成されて放置され、catch ステートメントが見つかるとエラーが処理されます。これにより、各メソッドでエラーを処理するコードを記述する必要がなくなります。また、finally ステートメントを使用することで、変数のリセットやデータの削除など、例外からの復旧を一元的に行うことができます。
例外が発生すると何が行われるか
例外が発生すると、コードの実行は停止し、例外発生より前に処理された DML 操作はロールバックされてデータベースにはコミットされません。例外はデバッグログに記録されます。未対応の例外、つまり、コードでキャッチされない例外の場合、Salesforce から開発者に例外情報を記載したメールが送信され、エンドユーザの Salesforce ユーザインターフェースにエラーメッセージが表示されます。
未対応の例外メール
LastModifiedBy 項目で指定された開発者に対して、Apex スタック追跡と顧客の組織およびユーザ ID を記載した、エラーを通知するメールが送信されます。他の顧客データはレポートに記載されません。
ユーザインターフェースでの未対応の例外
エンドユーザが標準のユーザインターフェースを使用中に Apex コードで例外が発生した場合、未対応の例外を示すテキストを含むエラーメッセージがページに次のように表示されます。