Salesforce 認定 MuleSoft デベロッパー 無料問題 9 / 10 ・ 分野10: エラーを処理する
アプリケーションに20のフローがあり、自分のエラーハンドラーを持たないフローのエラーを、共通のエラーハンドラー allErrorHandler で受けたい。フローの定義には手を入れない。どう設定するか。
- <configuration defaultErrorHandler-ref="allErrorHandler"/> を置く
- <import file="global.xml"/> で、そこにある allErrorHandler を全フローに読み込む
- <error-handler name="defaultErrorHandler"> に名前を変え、既定として拾わせる
- allErrorHandler の中を On Error Propagate にし、各フローのエラーを上へ集める
正解と解説を見る
正解: A
正解の理由
公式の例では、<configuration doc:name="Configuration" defaultErrorHandler-ref="allErrorHandler" /> で、フローの外に置いた <error-handler name="allErrorHandler"> を既定のエラー処理に指定している。こうしておくと、自分のエラーハンドラーを持たないフロー(例の someFlow)のエラーも allErrorHandler が受ける。Studio では、Global Elements の Create から Global Configuration の Configuration を選び、Default Error Handler の欄に allErrorHandler を選ぶと同じ設定になる。
違う選択肢
「<error-handler name="defaultErrorHandler"> に名前を変え、既定として拾わせる」… エラーハンドラーの名前を defaultErrorHandler のような名前にしても、既定にはならない。既定のエラーハンドラーは、configuration 要素の defaultErrorHandler-ref でハンドラーの名前を指して決める。
「<import file="global.xml"/> で、そこにある allErrorHandler を全フローに読み込む」… ほかの設定ファイルを読み込んでも、そこにあるエラーハンドラーはそれだけではどのフローにも結び付かない。フローの外にあるエラーハンドラーは、参照されて初めて使われる。
「allErrorHandler の中を On Error Propagate にし、各フローのエラーを上へ集める」… On Error Propagate はエラーを、自分を持つフローや Try の外側(呼び出し元など)へ渡す。フローの外に置いたエラーハンドラーへ、ほかのフローのエラーが集まる仕組みではない。
押さえどころ
この configuration 要素はキャンバスには表示されない。キャンバスに見えるのはフローの外に置いたエラーハンドラーだけなので、既定の指定が効いているかは Global Elements か Configuration XML で確かめる。