Error Handler (<error-handler/>)

logo cloud IDE Cloud IDE

logo desktop IDE Desktop IDE

Mule アプリケーションによってスローされたエラーをキャッチし、エラー種別に一致する最初の On-Error コンポーネント設定にルーティングします。

Error Handler コンポーネントには、On Error Continue と On Error Propagate という 2 つの子要素があり、アプリケーションで発生したエラーがハンドラーで設定されたエラー種別と一致する場合に実行するルートを設定できます。各ハンドラーには独自の動作があり、それを含むコンポーネント (Flow または Try スコープ) に関連して動作します。

  • On Error Continue (​on-error-continue​): 実行されると、実行の結果がそのコンテナ要素の結果として (コンテナが実行を正常に完了したかのように) 使用されます。この時点のすべてのトランザクションが正常にコミットされます。

  • On Error Propagate (​on-error-propagate​): すべてのトランザクションをロールバックしてから実行され、その結果が使用されて既存のエラーが再スローされます。この場合、コンテナ要素はその実行に「失敗」します。

エラーに一致するエラー処理設定がない場合、アプリケーションはデフォルトのエラー処理プロセスに従います。詳細は、4.4@mule-runtime::error-handling.adoc#default_error_handlingを参照してください。

コンポーネント XML

このコンポーネントは、次の XML 構造をサポートします。

<flow name="myFlow">

    <error-handler>
      <on-error-propagate name="onErrorPropagate" >
        <!-- error handling logic -->
      </on-error-propagate>
      <on-error-continue name="onErrorContinue" >
        <!-- error handling logic -->
      </on-error-continue>
    </error-handler>

</flow>
<error-handler/>​ Attributes 説明

doc:name

コンポーネントの編集可能な名前。

doc:id

コンポーネントの自動生成された識別子。

子 XML 要素と属性

<on-error-continue/>​ 子要素と ​<on-error-propagate/>​ 子要素は次の属性を共有します。

属性 説明

type

この On-Error 戦略で処理されるエラーを定義する、Mule エラー種別のカンマ区切りのリスト。

when

この On-Error 戦略の実行をトリガーする条件を定義する一致式。式はブール値 (​true​ または ​false​) に評価される必要があります。

enableNotifications

エラーが発生したときに、この戦略で ​ExceptionNotification​ 種別の通知がトリガーされるかどうかを指定します。デフォルトは ​true​ です。

logException

この戦略でエラーが処理される前に、そのエラーをレベル ​ERROR​ でログに記録するかどうかを指定します。デフォルトは ​true​ です。

エラー処理の例

次の例は、​VALIDATION:NOT_NULL​ エラーに対して ​{ "MyError": "value was expected to be null" }​ を生成し、その他のエラー種別に対しては ​{ "messageANY" : "Some other error" }​ を生成するハンドラーを設定します。

<error-handler >
  <on-error-continue
    enableNotifications="true"
    logException="true"
    type="VALIDATION:NOT_NULL">
    <ee:transform >
      <ee:message>
        <ee:set-payload>
        <![CDATA[%dw 2.0
        output application/json
        ---
        {
        MyError : error.description as String
        }]]>
        </ee:set-payload>
      </ee:message>
    </ee:transform>
  </on-error-continue>
  <on-error-continue
    enableNotifications="true"
    logException="true"
    type="ANY">
    <ee:transform>
      <ee:message >
        <ee:set-payload >
        <![CDATA[%dw 2.0
        output application/json
        ---
        {
        "messageANY" : "Some other error"
        }
        ]]>
        </ee:set-payload>
      </ee:message>
    </ee:transform>
  </on-error-continue>
</error-handler>