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

Apex での例外

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

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

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

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

未対応の例外メール

未対応の Apex 例外が発生した場合、Apex スタック追跡、例外メッセージ、および顧客の組織とユーザー ID を含むメールが送信されます。他のデータはレポートに記載されません。未対応の例外メールは、失敗したクラスまたはトリガーの LastModifiedBy 項目で指定された開発者にデフォルトで送信されます。さらに、Salesforce 組織のユーザーと任意のメールアドレスにメールを送信することもできます。これらのメール受信者は、プロセスまたはフローエラーメールを受信することもできます。これらのメール通知を設定するには、[設定] から [クイック検索] ボックスに「Apex 例外メール」と入力し、[Apex 例外メール] を選択します。入力したメールアドレスは、顧客の組織のすべての管理パッケージに適用されます。Tooling API オブジェクトの ApexEmailNotification を使用して、Apex 例外メールを設定することもできます。

  • 同期または非同期実行される Apex コードで重複する例外が発生すると、最初のメールのみが送信され、それ以降の例外メールは抑制されます。このメール抑制により、開発者の受信箱が同じエラーに関するメールで溢れないようにします。
  • 匿名 Apex の実行で検出された例外については、メールは送信されません。
  • Apex 例外メールの数は、アプリケーションサーバーごとに 1 時間あたり 10 件に制限されています。これは組織ごとの制限ではないため、特定の組織に配信される例外メールの件数がこのとおりになるとは限りません。

メモ

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

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

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