IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > Salesforceのdmlexceptionとは?概要や使い方をご紹介

Salesforceのdmlexceptionとは?概要や使い方をご紹介

IT・技術関連 更新日:2024.09.05
エンジニア採用
Salesforceのdmlexceptionとは?概要や使い方をご紹介

dmlexceptionとは? Salesforceのdmlexceptionとは、DMLステートメントで問題が発生した場合のエラー処理のことです。 Apexコード実行時に問題が発生した場合、呼び出されるエラー処理のことを例外処理と言います。SalesforceのApexコードでは、例外処理をカスタマイズできます。その例外処理の1つに、dmlexceptionがあります。 dmlexceptionは、DMLステートメントに関しての問題が発生した場合の例外処理です。

サンプルコード

以下に、Salesforceのdmlexception例外処理のサンプルコードを説明します。 SalesforceのApexコードで、DMLステートメントに関しての問題が発生した場合、「catch (System.DmlException e)」側の処理が実行されます。「e.getDmlMessage」メソッドは、問題が発生したユーザーメッセージを取得できます。
Account[] accts = new Account[]{new Account(billingcity = 'San Jose')};
try {
    insert accts;
} catch (System.DmlException e) {
    for (Integer i = 0; i < e.getNumDml(); i++) {
        // Process exception here
        System.debug(e.getDmlMessage(i));
    }
}

例外処理の共通メソッド

Salesforceの例外処理には、共通で使用できるメソッドが用意されています。 1.「getCause」メソッド 例外オブジェクトとして原因を返します。 2.「getLineNumber」メソッド 例外発生の箇所の行番号を返します。 3.「getMessage」メソッド 例外発生時にユーザーに示されるエラーメッセージを返します。 4.「getStackTraceString」メソッド スタック追跡を返します。 5.「getTypeName」メソッド DmlException、ListException、MathException など例外型を返します。 6.「initCause」メソッド 例外処理が設定されていない場合に設定します。 7.「setMessage」メソッド 例外発生時にユーザーに示されるエラーメッセージを設定します。

dmlexceptionの専用メソッド

Salesforceのdmlexceptionには、専用のメソッドも用意されています。 1.「getNumDml」メソッド 問題が発生した行数を返します。 2.「getDmlFieldNames」メソッド 問題が発生した行の項目名を返します。引数には行No.を指定します。 3.「getDmlFields」メソッド 問題が発生した行の項目トークンを返します。引数には行No.を指定します。 4.「getDmlId」メソッド 問題が発生した行のレコードIDを返します。引数には行No.を指定します。 5.「getDmlIndex」メソッド 問題が発生した行の元の位置を返します。引数には行No.を指定します。 6.「getDmlMessage」メソッド 問題が発生した行のユーザーメッセージを返します。引数には行No.を指定します。 7.「getDmlType」メソッド 問題が発生した行のApex失敗コードを返します。

「getDmlType」メソッドのサンプルコード

dmlexceptionの「getDmlType」メソッドのサンプルコードを説明します。 「getDmlType」メソッドは、問題が発生した行のApex失敗コードを列挙型のSystem.StatusCodeの値で返します。
try {
  insert new Account();
}   catch (System.DmlException ex) {
      System.assertEquals(
         StatusCode.REQUIRED_FIELD_MISSING,
         ex.getDmlType(0));
}

dmlexception例外処理の確認方法

Salesforceのdmlexception例外処理の確認方法について説明します。 例外処理を確認するには、DMLステートメントで問題を発生させるApexコードを作成します。例えば、開発者コンソールで次のようなサンプルコードを作成して実行します。
Merchandise__c m = new Merchandise__c();
insert m;
上記のサンプルコードでは、「insert」DMLステートメントで必須の項目を指定せず、商品品目を指定しているので、次のようなエラーメッセージが出て異常終了します。 System.DmlException: Insert failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Required fields are missing: [Description, Price, Total Inventory]: [Description, Price, Total Inventory]

dmlexception例外処理の実装

サンプルコードで問題が発生しても異常終了しないように、dmlexception例外処理を実装します。 以下のサンプルコードでは、例外処理が実行された場合、「The following exception has occurred: (エラーメッセージ)」を表示します。
try {
    Merchandise__c m = new Merchandise__c();
    insert m;
} catch(DmlException e) {
    System.debug('The following exception has occurred: ' + e.getMessage());
}

Salesforceのdmlexceptionを活用しよう!

今回は、Salesforceのdmlexceptionについて説明しました。 dmlexceptionは、ApexコードのDMLステートメントで問題が発生した場合の例外処理です。dmlexceptionを設定することで、プログラムが異常終了することを防止し、問題の原因追及も可能となります。 ぜひこの機会に理解しておきましょう。]]>

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニアAWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。

・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ