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

ブログTOP > IT・技術関連 > SalesforceでInvocation TargetExceptionエラーが出たら?対処法を解説

SalesforceでInvocation TargetExceptionエラーが出たら?対処法を解説

IT・技術関連 更新日:2024.09.05
エンジニア採用
SalesforceでInvocation TargetExceptionエラーが出たら?対処法を解説

SalesforceでInvocation TargetExceptionエラーの対処法とは? Salesforceを組織で運用する際にInvocation TargetExceptionエラーが発生してしまう状況に備えて、仕組みとSalesforce上での対処方法について解説していきます。 Salesforceを扱う会社へ転職したあとに、事前にInvocation TargetExceptionエラーが出力される仕組みを理解しておくことで、問題の解決に対してスムーズに解決策へのイメージがしやすくなります。 本記事ではSalesforce上でInvocation TargetExceptionの位置づけから、より早く問題解決へ導くための基本的な仕組みの解説をご紹介していきます。

SalesforceのInvocation TargetExceptionの位置づけ

SalesforceにおいてInvocation TargetExceptionが用いられるケースとしては、組織上でjavaクラスの定義をする局面や、開発者コンソールで各クラスの親クラスや子クラスを定義する場合に、何かしらの問題が発生した場合などにエラーが発生する場合などが挙げられます。 SalesforceではApexが利用されますが、Invocation TargetExceptionはJavaにおけるメソッドの一部で利用されていますので、基本的にApex上ではInvocation TargetExceptionのエラーを見かけることはないでしょう。 したがって次の章ではSalesforceを組織上で運用する場合でのJavaのInvocation TargetExceptionメソッドについて基本的な詳細を解説していきます。

Invocation TargetExceptionについて復習

Invocation TargetExceptionとはJavaのリフレクションAPIのクラスで呼び出されたメソッドに対して、スローされた場合に例外が発生することがあります。その例外をラップする事でチェックの対象外とみなす挙動を示しています。 このターゲット例外はコンストラクタにおいても同様に適応されます。 以下の例ではInvocation TargetExceptionがメッセージを定義しています。

...  } catch (InvocationTargetException e) {
    log.error("error001 : error Message");
  }

Invocation TargetExceptionの挙動について

前章に記載した例ではInvocation TargetExceptionでの挙動の理解を深めるために、定義したメッセージをログに出力しています。 しかしあくまで、Invocation TargetExceptionで出力されるエラーは、例外処理が出力されるだけで、メッセージだけの出力では原因が紐とけない場合がありますので注意しましょう。 そのため、Invocation TargetExceptionのメッセージを設定する場合は、単に文字列として出力されることを踏まえて、想定されている原因へ紐づけされる意味を設定するようにしましょう。

リフレクションAPIとは?

リフレクションAPIとはjava.lang.reflectというパッケージ内に存在するAPIのことを示しています。 リフレクションAPIを利用することで、コード内のフィールドや、メソッド、コンストラクタの情報を、前もって定義されたセキュリティー上で操作、実行することが可能になります。 リフレクションAPIを利用する身近なケースとしては、Salesforceの開発を自身のIDEやエディターを利用している場合です。 たとえばコードの補完機能を利用すると同時にString文字はString文字として認識して、IDE内で識別したメタデータを介して適切な補完をするために利用されます。

SalesforceのnvocationTargetExceptionエラーの切り分け方法

Salesforceのシステムが正常に起動しない場合に、java.lang.reflect.InvocationTargetExceptionと言うエラーメッセージが出力されることがあります。 これもInvocationTargetExceptionと記述されていますが、あくまでリフレクションAPIがメソッドを呼び出して、そのメソッド側で例外が発生している状況を示しています。したがってメソッド側の例外からエラーメッセージの発生した原因を調べる必要があります。

getCauseメソッドを利用して原因を切り分ける方法

メソッド側の例外を確認するためにはgetCauseメソッドを利用してください。

省略
} catch (InvocationTargetException e) {
    assertThat(e.getCause(), is(instanceOf(IllegalArgumentException.class)));
    assertEquals("error message",
e.getCause().getMessage());
}
上記の記述ではgetCauseメソッドを利用してInvocationTargetExceptionの原因を取得して表示しています。 ただし必ずしもInvocationTargetExceptionエラーが発生した場合はgetCauseメソッドで原因が見つかるわけでなく、メッセージのnullを返す場合もありますので、その場合は発生した状況に合わせて別の手段を講じましょう。

InvocationTargetExceptionに関係するメソッド

getCause()
InvocationTargetExceptionのエラーが発生した場合に例外の原因を呼び出します。
getTargetException()
InvocationTargetExceptionリフレクションのクラスでコンストラクタもしくはメソッドがスローされた例外を取得するためのメソッドです。 発生したエラーの内容に応じて対応できるように、各メソッドの挙動について把握しておきましょう。 より詳細な説明は以下のjavadocご参考にしてください。

Apex上ではInvocationTargetExceptionエラーは発生しない

基本的にSalesforceのApex上ではInvocationTargetExceptionエラーは発生しません。そのため、もしエラーが発生しているとすれば、組織上でのクラスに問題が発生している可能性があります。 Salesforceの開発者コンソール上で切り分けをする場合は、エラーが発生する前のクラスを操作していれば、一度クラスを削除してエラーが発生しなくなるか検証してみてください。 よくあるInvocationTargetExceptionが発生する例としては、外部の親クラスが内部クラスに過剰なアクセスをした場合に発生する事があります。 また開発者コンソールではなく、独自のIDEやエディターを利用している場合は、エディター上でのエラーの場合があります。 切り分けに時間がかかることもありますが、まずは一つずつ検証していきましょう。

InvocationTargetExceptionエラーはgetCause()を使おう

InvocationTargetExceptionのエラーはただの文字列ですので、エラーが発生している原因を間接的に見分ける為の役割にしかなりません。 InvocationTargetExceptionが発生する例としては、外部の親クラスが内部クラスに過剰なアクセスをする場合に発生する事があります。また開発者コンソールの代わりに利用している自身のIDE上で発生しているエラーの可能性があります。 Salesforce上でInvocation TargetExceptionが発生した場合はgetCause()メソッドで原因を調査し、それでも問題が解決しない場合は以前に開発者コンソール上で行ったクラスへの操作を見直してみましょう。]]>

この記事の監修者・著者

株式会社オープンアップ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・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ