2021/06/7

Salesforceのthrow Exceptionによるエラー処理のメリットと使用例

 
  

SalesforceにおけるthrowなどのExceptionを使用したエラー処理

SalesforceのExceptionステートメントに分類されるthrowステートメントは、Exception(例外)を生成します。 throwによって生成されたException(例外)を使用して、コードの正常な実行が中断されたことを通知できます。さらに、Exceptionステートメントのtry、catch、finallyを使用して、Exception(例外)から復旧する処理を実行できます。

Exceptionステートメントによるエラー処理のメリット

Exceptionステートメントを使用すると、エラー処理を簡素化できるメリットがあります。 Salesforceにおけるエラー処理にはException(例外)の他に、System.assert コールによるアサーション、エラーコードやBoolean値を返すなどの方法がありますが、これらと比較してよりシンプルにエラー処理を実行できます。 Exceptionステートメントでは、コールされたメソッドからコール側までの範囲で、上位へとバブルアップして、エラー処理を実行するcatch ステートメントを発見します。そのため、エラーを処理するためのコードを各メソッドに用意する必要がありません。 また、finallyステートメントにより、エラーの原因となる変数のリセットやデータの削除などを行い、例外の発見から復旧までを一元的に実行できます。

Exception(例外)によるエラー処理の流れ

Exceptionステートメントを使用して、以下のようなエラー処理を実行できます。 1. Exception(例外)が発生すると、コードの実行を停止する。 2. Exception(例外)発生前に処理された DML操作をロールバックする。 → データベースにはコミットしない。 3. Exception(例外)をデバッグログに記録する。 4. Salesforceから管理者にException(例外)情報を記載したメールが送信される。 → 送信先:エラーとなったクラスもしくはトリガのLastModifiedBy項目で指定された開発者 5. エンドユーザのSalesforce画面にエラーメッセージが表示される。

SalesforceのExceptionステートメントの種類

Salesforce ApexのExceptionステートメントには、throwの他にException(例外)に対応するtry、catch、finallyというステートメントがあります。Exceptionステートメントの種類と機能について説明します。

Exceptionステートメントのthrowステートメント

throwステートメントは例外オブジェクトを指定して、特定のエラーに関する情報を提供することでException(例外)を生成します。生成されたException(例外)を使用してエラーの発生を通知することができます。throwステートメントの構文を紹介します。
throw exceptionObject; 

Exceptionステートメントのtry、catch、finallyステートメント

throwで生成したException(例外)に対応するtry、catch、finallyステートメントが用意されています。これらの組み合わせにより、発生したException(例外)から復旧できます。

tryステートメント

tryステートメントは、Exception(例外)が発生する可能性をもつコードのブロックを識別します。 1つのtryステートメントに対して1つ以上のcatch ステートメントを関連づけられます。同様にfinallyステートメントも関連づけられますが、finallyステートメントは1つまでに限られます。tryブロックを使用する場合は、catchブロックとfinally ブロックのいずれか1つが必要です。

catchステートメント

catchステートメントは、指定された種類のException(例外)を処理できるコードのブロックを識別します。 catchステートメントには一意の例外種別を指定する必要があります。また、1つのcatchブロックで特定の例外種別がキャッチされると、その他に該当するcatchブロックがあったとしても実行されません。

finallyステートメント

finallyステートメントは、実行が保証されるコードのブロックの識別とクリーンアップを行います。 finallyステートメントはException(例外)の発生や種別と関係なく、常に実行されるため、エラー処理だけでなく、リソースの解放などのクリーンアップコードとしても活用できます。

try、catch、finallyステートメントを使用したサンプル

以下がtry、catch、finallyステートメントを使用したサンプルです。
 try {
  // Try block
 code_block
} catch (exceptionType variableName) {
  // Initial catch block.
  // At least the catch block or the finally block must be present.
 code_block
} catch (Exception e) {
  // Optional additional catch statement for other exception types.
  // Note that the general exception type, 'Exception',
  // must be the last catch block when it is used.
 code_block
} finally {
  // Finally block.
  // At least the catch block or the finally block must be present.
 code_block
}

Salesforceの例外処理、throwなどのExceptionステートメントを理解する

SalesforceのApexの例外処理を実行する、throwなどのExceptionステートメントについて説明しました。 Exceptionステートメントでは、throwによって生成した例外から、正常なコード実行の妨げとなるエラーなどのイベントに対処できます。 Exception(例外)の生成と復旧に使用できる、Exceptionステートメントについて理解しましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】