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