---
schema_version: "1"
id: b42d3c614d4fbe8eb163ed1a6dff0bde3fcad19fb65bcceb9229f7557264b0a1
title: On-Error コンポーネント
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.5/on-error-scope-concept.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.5/on-error-scope-concept
source_site: docs.mulesoft.com
content_type: documentation
content_hash: b65fb93e4a23fa8c5d79771af0f029262551afcda30fca883a9fae4896ba3964
description: MuleSoft Documentation Site
release: "4.5"
latest: false
---
# On-Error コンポーネント

Mule アプリケーションでエラーが発生すると、Error Handler コンポーネントでエラーが ​`HTTP:NOT_FOUND`​、​`DB:CONNECTIVITY`​、​`ANY`​ (すべての Mule エラーのデフォルト) など、Mule エラーに一致した最初の On-Error コンポーネント (On Error Continue または On Error Propagate) 設定にルーティングされます。エラーについてエラー処理が設定されていない場合、アプリケーションは​[デフォルトのエラー処理](https://docs.mulesoft.com/jp/mule-runtime/4.5/error-handling#default_error_handling)​プロセスに従います。

![mruntime error handler](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/mruntime-error-handler.png)

Figure 1. Studio のエラー処理コンポーネント

## [](#on-error-コンポーネントの動作)On-Error コンポーネントの動作

On-Error コンポーネントでは、​_オーナー_​に与える影響で違いがあります。つまり、定義されている Flow または Try スコープです。また、On-Error コンポーネントはグローバルエラーハンドラー内で定義することができ、Mule アプリケーション全体に影響します。

### [](#on-error-propagate)On Error Propagate

実行しますが、含む側のスコープ (たとえば、エラーが発生した Try スコープが含まれるフロー) またはエラーが発生したフローに対するフロー参照が含まれる外部フローなど、上のレベルにエラーを伝播します。 エラーによってオーナーの実行が中断され、その上のレベルに伝播するため、そのレベルで失敗となります。さらに、オーナーが処理するトランザクションがロールバックされます。ただし、別のコンポーネント (On Error Propagate を所有しないコンポーネント) でトランザクションが作成された場合は、トランザクションはロールバックされません。

![mruntime on error propagate](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/mruntime-on-error-propagate.png)

### [](#on-error-continue)On Error Continue

実行し、オーナーが実行を正常に完了したかのように、実行の結果をそのオーナーの結果として使用します。オーナーが処理するトランザクションはコミットされます。ただし、別のコンポーネント (On Error Continue を所有しないコンポーネント) でトランザクションが作成された場合は、トランザクションはコミットされません。

## [](#エラーの照合)エラーの照合

Mule アプリケーションのデザイン中にエラーの可能性を識別して処理できるように、On-Error コンポーネントではアプリケーションで設定される Runtime Engine および操作によってスローされる可能性があるエラーをリストしています。処理するエラーを選択できます。

- エラー種別に基づく照合:
    
    On-Error コンポーネントでは、選択した​[エラー種別](https://docs.mulesoft.com/jp/mule-runtime/4.5/mule-error-concept#error_types)​に基づいて照合を実行できます。選択可能なエラー種別のリストは、On-Error コンポーネントが適用されるフローまたはスコープ内のモジュールおよびコネクタ操作に応じて異なります。また、ランタイムでスローされる可能性がある ​`EXPRESSION`​ エラーと ​`STREAM_MAXIMUM_SIZE_EXCEEDED`​ エラーもリストしています。
    
    ![mruntime on error type selection](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/mruntime-on-error-type-selection.png)
- 条件に基づく照合 (より高度なユースケース向け):
    
    On-Error コンポーネントの ​**When**​ 項目で定義した ​`when`​ 条件に基づいてエラー照合を実行できます。たとえば、コンポーネントを「fatal (致命的)」という語が含まれるエラーメッセージがある致命的なエラーにマップすることができます。
    
    ```xml
    <on-error-continue
      enableNotifications="true" logException="true"
      type="ANY"
      when='error.cause.message contains "fatal"'/>
    ```
    
    この例では、​`when`​ 式に一致するすべてのエラーが ​`on-error-continue`​ によって処理されます。エラーハンドラーによって指定された種別および条件に一致するエラーのみが処理されるように、​`type="HTTP:CONNECTIVITY"`​ などの制限種別を追加することもできます。

照合条件は、On-Error コンポーネントがエラーハンドラーに存在する順番で連続的に評価されます。たとえば ​`VALIDATION:NOT_NULL`​ をある方法で処理し、その他のすべてのエラーを別の方法で処理する場合は、残りのエラーを捕捉するコンポーネント (2 つ目の On-Error コンポーネントで ​`ANY`​ として識別) の前に、そのエラーの On-Error コンポーネント設定を指定します。明示的に照合しないエラーまたは ANY を使用して捕捉するエラーでは、デフォルトのエラー処理が実行されます。

## [](#設定と使用)設定と使用

ほとんどの場合、On Error コンポーネントはスコープに似た Error Handler コンポーネント内で設定します。各フローには組み込みの Error Handler が 1 つだけ含まれますが、Error Handler には必要に応じて任意の数の On-Error コンポーネントを含めることができ、各 On-Error コンポーネントには Logger など、On-Error コンポーネントによって捕捉されたエラーを処理するコンポーネントを任意の数含めることができます。

Error Handler コンポーネントは Flow コンポーネントおよび Try コンポーネントに組み込まれているため、On-Error コンポーネントをフローのスコープ内または Try コンポーネント内で発生したエラーに使用できます。例は、​[「On-Error コンポーネントを使用したメッセージングエラーの処理」](https://docs.mulesoft.com/jp/mule-runtime/4.5/error-handling#on_error_continue)​を参照してください。

On-Error コンポーネントは、Flow コンポーネントまたは Try スコープから参照される個別の Error Handler 設定で使用することもできます (​[「グローバルエラーハンドラーの参照」](https://docs.mulesoft.com/jp/mule-runtime/4.5/error-handling#global_error_handler)​を参照)。

デフォルトでは、On-Error コンポーネントによって一致するエラーも記録され、エラーが発生した場合のエラーの通知も有効になります。これらの設定を無効にするには、Studio でコンポーネントのプロパティを変更するか、設定 XML を編集します。 Mule アプリケーションで通知リスナーを設定して、通知イベントに反応できるようにすることもできます。

### [](#flow_error_config)フロー内のエラー処理

フロー内の組み込み Error Handler コンポーネント内部で、エラー種別と式を照合する On -Error コンポーネントを 1 つ以上セットアップできます。次の例は、任意のフロー内で発生したエラーを処理する一般的な構造を示しています。1 つのフローでは、Error Handler コンポーネントの On Error Continue (​`on-error-continue`​) を使用します。もう 1 つのフローでは On Error Propagate (​`on-error-propagate`​) を使用します。

```xml
<flow name="catch">
  <!-- flow logic -->
  <error-handler>
    <on-error-continue>
      <!-- error handling logic -->
    </on-error-continue>
  </error-handler>
</flow>

<flow name="rollback">
  <!-- flow logic -->
  <error-handler>
    <on-error-propagate>
      <!-- error handling logic -->
    </on-error-propagate>
  </error-handler>
</flow>
```

例は、​[「On-Error コンポーネントを使用したメッセージングエラーの処理」](https://docs.mulesoft.com/jp/mule-runtime/4.5/error-handling#on_error_continue)​を参照してください。

### [](#on-error-スコープの再利用)On Error スコープの再利用

グローバルに公開してフローおよび Try スコープで参照することでエラーハンドラーを共有できるのと同じように、On-Error コンポーネントを再利用することもできます。On-Error コンポーネントをグローバルに定義して名前を付けてから、Error Handler コンポーネントから参照できます。

例: 参照される On-Error の XML 設定

```xml
<on-error-propagate name="sharedPropagateHandler">
  <logger message="An unhandled error has occurred."/>
</on-error-propagate>

<on-error-continue type="EXPRESSION" name="sharedContinueHandler">
  <logger message="An expression failed to evaluate."/>
</on-error-continue>

<error-handler name="reusingHandlers">
  <on-error ref="sharedContinueHandler"/>
  <on-error-continue type="ROUTING">
    <logger message="An expression failed to evaluate."/>
  </on-error-continue>
  <on-error ref="sharedPropagateHandler"/>
</error-handler>
```

他の再利用の例は、​[「グローバルエラーハンドラーの参照」](https://docs.mulesoft.com/jp/mule-runtime/4.5/error-handling#global_error_handler)​を参照してください。

## [](#エラー処理の例)エラー処理の例

次のエラーハンドラーは、​`VALIDATION:NOT_NULL`​ エラーに対して ​`{ "messageANY" : "Some other error" }`​ ではなく ​`{ "MyError": "value was expected to be null" }`​ を生成するように設定されています。文字列 ​`value was expected to be null`​ は ​`VALIDATION:NOT_NULL`​ エラーの説明です。Is Null コンポーネントがこのエラーをスローできます。 Is Null は Validation Module に属しています。

```xml
<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>
```

## [](#on-error-コンポーネントリファレンス)On-Error コンポーネントリファレンス

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 20%;">
<col style="width: 55%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">項目</th>
<th class="tableblock halign-left valign-top">値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Type (種別) (​<code>type</code>​)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Mule エラー種別</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>この On-Error 戦略によって処理されるエラーを定義する、Mule エラー種別のカンマ区切りのリスト。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>When (次の場合) (​<code>when</code>​)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>DataWeave 式</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>この On-Error 戦略の実行をトリガーする条件を定義する一致式。式はブール値 (​<code>true</code>​ または ​<code>false</code>​) に評価される必要があります。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Enable Notifications (通知を有効化) (​<code>enableNotifications</code>​)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Boolean (ブール)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>エラーが発生したときに、この戦略で ​<code>ExceptionNotification</code>​ 種別の通知が起動されるかどうかを指定します。デフォルト値は ​<code>true</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Log Exception (例外を記録) (​<code>logException</code>​)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ブール。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>この戦略でエラーが処理される前に、そのエラーをレベル ​<code>ERROR</code>​ でログに記録するかどうかを指定します。デフォルト値は ​<code>true</code>​ です。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#関連情報)関連情報

- [Mule エラー](https://docs.mulesoft.com/jp/mule-runtime/4.5/mule-error-concept)
- [Try スコープ](https://docs.mulesoft.com/jp/mule-runtime/4.5/try-scope-concept)
- [Mule Runtime Engine 通知](https://docs.mulesoft.com/jp/mule-runtime/4.5/mule-server-notifications)