---
schema_version: "1"
id: e8569404a3ded81d346cc15b7e5ad8ef578c0cb048f069cd8f9b5d23142e03ce
title: エラーハンドラー
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.5/error-handling.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.5/error-handling
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 6dc0fc0a8a7238f376f31f7d5b080eb07f758c93aed7b462afd26675d9f8474e
description: MuleSoft Documentation Site
release: "4.5"
latest: false
---
# エラーハンドラー

Mule で発生するエラーは、次の 2 つの主要カテゴリのいずれかに分類されます。

- [システムエラー](#system_errors)
- [メッセージングエラー](#messaging_errors)

## [](#system_errors)システムエラー

システムレベルで例外が発生し、Mule イベントが関係していない場合、システムエラーがスローされます。システムエラーハンドラーは、次の状況で発生した例外を管理します。

- アプリケーションの起動中。
- 外部システムへの接続が失敗した場合。

システムエラーが発生すると、Mule は、登録されているリスナーにエラー通知を送信し、エラーを記録し、エラーが接続の失敗によるものであれば再接続戦略を実行します。

システムエラーハンドラーは、Mule では設定できません。

## [](#messaging_errors)メッセージングエラー

Mule イベントと Mule イベントに含まれるメッセージを処理する Mule アプリケーションのフロー内で問題が発生すると、Mule はメッセージングエラー (​[Mule エラー](https://docs.mulesoft.com/jp/mule-runtime/4.5/mule-error-concept)​) をスローします。

Mule メッセージングエラーは複数の方法で処理できます。

- [デフォルトのエラー処理](#default_error_handling)​メカニズムを使用できます。
- フロー内では、フローの組み込み Error Handler コンポーネント内で ​[On-Error コンポーネント](https://docs.mulesoft.com/jp/mule-runtime/4.5/on-error-scope-concept)​ (On Error Continue および On Error Propagate) をセットアップできます。これらのコンポーネントには、エラーを処理するための任意の数のコンポーネントを含めることができます。
    
    次の図は、イベントプロセッサー (HTTP Request 操作やデータベース操作など) でエラーがスローされたときの動作を示しています。
    
    ![error handling 39be7](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/error-handling-39be7.png)
- フロー外では、​[Error Handler](#global_error_handler)​ コンポーネントをセットアップし、そのコンポーネントを他のエラーハンドラー設定から参照できます。グローバルエラーハンドラーには、On Error コンポーネントとそのコンテンツを含めることもできます。
- エラー処理は、フローに存在する ​[Try スコープ](https://docs.mulesoft.com/jp/mule-runtime/4.5/try-scope-concept)​内からセットアップすることもできます。スコープ内には組み込みエラーハンドラーが含まれ、その中で On Error コンポーネントとそのコンテンツを設定できます。

### [](#default_error_handling)メッセージのデフォルトエラー処理の使用

デフォルトでは、未処理のメッセージングエラーは記録され、伝達されます。フローで処理されている Mule メッセージでエラーが発生すると、フローの通常の実行は停止し、プロセスがフローのデフォルトのエラーハンドラーに転送され、そのエラーハンドラーでエラーが伝達されます。

次の例は、エラーを管理するように明示的に設定したエラー処理コンポーネントを使用するのではなく、デフォルトのエラー処理を使用する簡単な Mule アプリケーション設定を示しています。

![デフォルトのエラー処理メッセージ](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/mruntime-error-handling-default.png)

デフォルトのエラー処理の例の XML は次のようになります。

```xml
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
  <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<http:request-config name="HTTP_Request_configuration" doc:name="HTTP Request configuration" >
  <http:request-connection host="jsonplaceholder.typicode.com" port="80" />
</http:request-config>
<flow name="error-handlers-example" >
  <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/users"/>
  <http:request method="GET" doc:name="Request" config-ref="HTTP_Request_configuration" path="/somebadrequest"/>
</flow>
```

この設定で Mule アプリケーションを開始し、​`[http://0.0.0.0:8081/users](http://0.0.0.0:8081/users)`​ を (たとえばブラウザーなどに) 読み込むことで HTTP リスナーをトリガーすると、フローは、存在しないファイルに対して HTTP 要求 (​`http://jsonplaceholder.typicode.com:80/somebadrequest`​) を実行します。結果として、Anypoint Studio コンソールでエラーが記録されて Web ブラウザーに伝達されます。

- Anypoint Studio コンソールログ
    
    Studio コンソールはエラーメッセージを出力します。このメッセージは、HTTP GET 要求から返された 404 エラーがデフォルトハンドラー (​`OnErrorPropagateHandler`​) により伝達されていることを示します。Mule はこのエラーを HTTP:NOT\_FOUND​ として識別します。
    
    ```txt
    ERROR 2021-01-19 18:48:50,392
      [[error-handlers-example].http.requester.HTTP_Request_configuration.11 SelectorRunner]
      [processor: error-handlers-example/processors/0; event: 1d3baf11-5aa0-11eb-b96f-a483e7abe2b5] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler:
    ********************************************************************************
    Message               : HTTP GET on resource 'http://jsonplaceholder.typicode.com:80/somebadrequest' failed: not found (404).
    Element               : error-handlers-example/processors/0 @ error-handlers-example:error-handlers-example.xml:15 (Request)
    Element DSL           : <http:request method="GET" doc:name="Request" config-ref="HTTP_Request_configuration" path="/somebadrequest"></http:request>
    Error type            : HTTP:NOT_FOUND
    FlowStack             : at error-handlers-example(error-handlers-example/processors/0 @ error-handlers-example:error-handlers-example.xml:15 (Request))
    
      (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
    ********************************************************************************
    ```
    
    Studio コンソールのエラーログは次の情報を表します。
    
    - **Message (メッセージ)**​: エラーの説明
    - **Element (要素)**​: 実行を失敗させ、エラーの原因となった XML 要素
    - **Element DSL (要素 DSL)**​: 実行を失敗させ、エラーの原因となった XML 要素。DSL 形式で表現されます。
    - **Error type (エラー種別)**​: Mule アプリケーションで発生した Mule エラーの種別
    - **Flowstack (フロースタック)**​: フロースタックトレースのエラーログ
        
        この項目には、Mule イベントを処理した各フローと、イベントを次のフローに送信したプロセッサーのエントリがリストされます。最後のエントリには、イベントの処理中に失敗したフローとプロセッサーが示されます。
        
        Mule 4.3.0 以降、フロースタックエントリはデフォルトで有効になっています。フロースタックログを無効にするには、​`mule.flowTrace`​ 設定プロパティを ​`false`​ に設定することができます。
- Web ブラウザーへのエラーの伝達
    
    HTTP:NOT\_FOUND​ エラーの説明は、リスナーをトリガーするために使用したブラウザータブに表示されます。
    
    ```txt
    HTTP GET on resource 'http://jsonplaceholder.typicode.com:80/somebadrequest'
    failed: not found (404).
    ```
    
    この Mule エラーの説明は、次の 2 つの理由でブラウザーに表示されます。
    
    - デフォルトのエラーハンドラーで On Error Propagate プロセス (​`OnErrorPropagateHandler`​) を使用しています。
        
        On Error Propagate コンポーネントによって、フローが失敗し、HTTP リスナーで、見つからないファイルに関連付けられる ​`404`​ エラーのエラー応答が準備されます。
    - HTTP リスナーでデフォルトのエラー (​`error.description`​) および成功 (​`payload`​) 応答を使用してメッセージ本文を返しています。
        
        カスタム応答が設定されていないため、ブラウザーにエラーの説明が表示されます。

### [](#on_error_continue)On-Error コンポーネントを使用したメッセージングエラーの処理

デフォルトのエラー処理メカニズムを使用する代わりに ​[On-Error コンポーネント](https://docs.mulesoft.com/jp/mule-runtime/4.5/on-error-scope-concept)​ (On Error Continue および On Error Propagate) を組み込みまたは外部の Error Handler コンポーネント内で使用できます。

次の例は、HTTP リスナーがトリガーされたときに HTTP 要求の結果を返すように Studio で設定された簡単なフローを示しています。​[デフォルトのエラー処理の例](#default_error_handling)​とは異なり、この例では、On Error Continue (​`on-error-continue`​) がフローの組み込み Error Handler (​`error-handler`​) コンポーネント内で設定され、On Error Continue には、エラーの説明を書き込む Logger が含まれます。

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

この例の XML は次のようになります。

```xml
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
  <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<http:request-config name="HTTP_Request_configuration" doc:name="HTTP Request configuration" >
  <http:request-connection host="jsonplaceholder.typicode.com" port="80" />
</http:request-config>
<flow name="error-handlers-normalFlow" >
  <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/users"/>
  <http:request method="GET" config-ref="HTTP_Request_configuration" path="/somebadrequest"/>
  <logger level="INFO" doc:name="Logger" />
  <error-handler>
    <on-error-continue enableNotifications="true" logException="true" doc:name="On Error Continue" >
      <logger level="ERROR" doc:name="Logger" message="#[error.description]"/>
    </on-error-continue>
  </error-handler>
</flow>
```

デフォルトのエラー処理の例と同様に、要求されたページが見つからないため、フローは 404 エラーを返し、Mule はこのエラーを HTTP:NOT\_FOUND​ エラーとして識別します。 ただし、このケースでは、エラーが伝達されないため、HTTP リスナーをトリガーするために使用したブラウザーのタブは空白になります。On Error Continue を使用すると、例のフローは、ページが見つからなくても、GET 要求の 200 と共に正常終了したかのように処理されます。HTTP リスナーはデフォルトの成功応答の動作 (メッセージ本文として ​`payload`​ コンテンツを返す) を実行します。ページが見つからなかったため、ブラウザーに表示するコンテンツはありません。このため、ブラウザータブは空白になります。

Studio コンソールには、​`OnErrorContinueHandler`​ がエラーを処理していることを示すエラーメッセージ (以下の 1 番目の ERROR メッセージ) も出力されます。また、Mule エラーについて説明する (​`error.description`​。​[「Mule エラーのセレクター式」](https://docs.mulesoft.com/jp/mule-runtime/4.5/mule-error-concept#selector_expressions)​を参照)、ロガーからの ERROR メッセージ (以下の 2 番目の ERROR) が出力されます。

```txt
ERROR 2021-01-19 18:42:04,583
  [[error-handlers-example].http.requester.HTTP_Request_configuration.11 SelectorRunner]
  [processor: error-handlers-normalFlow/processors/0; event: 2a95eaa1-5a9f-11eb-b96f-a483e7abe2b5] org.mule.runtime.core.internal.exception.OnErrorContinueHandler:
********************************************************************************
Message               : HTTP GET on resource 'http://jsonplaceholder.typicode.com:80/somebadrequest' failed: not found (404).
Element               : error-handlers-normalFlow/processors/0 @ error-handlers-example:error-handlers-example.xml:15
Element DSL           : <http:request method="GET" config-ref="HTTP_Request_configuration" path="/somebadrequest"></http:request>
Error type            : HTTP:NOT_FOUND
FlowStack             : at error-handlers-normalFlow(error-handlers-normalFlow/processors/0 @ error-handlers-example:error-handlers-example.xml:15)

  (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

ERROR 2021-01-19 18:42:04,586
  [[error-handlers-example].http.requester.HTTP_Request_configuration.11 SelectorRunner]
  [processor: error-handlers-normalFlow/errorHandler/0/processors/0; event: 2a95eaa1-5a9f-11eb-b96f-a483e7abe2b5] org.mule.runtime.core.internal.processor.LoggerMessageProcessor:
  HTTP GET on resource 'http://jsonplaceholder.typicode.com:80/somebadrequest' failed: not found (404).
```

On Error Continue (​`on-error-continue`​) の代わりに On Error Propagate (​`on-error-propagate`​) を使用して同じ Mule アプリケーションを作成した場合、同じエラーメッセージが Studio コンソールに表示されますが、記録されたエラーメッセージがブラウザーにも表示されます。この動作はデフォルトのエラー処理動作と同じです。どちらも On Error Propagate を使用するためです。

各 On Error コンポーネント内で、定義するエラーパスには任意の数のイベントプロセッサーを組み込むことができるため、特定のエラー種別を必要なだけ正確に処理できます。On-Error コンポーネントで処理する特定の Mule エラーを選択できます。Error Handler コンポーネントは、エラーに一致する最初の On Error コンポーネントにエラーを転送します。

フローレベルでのより複雑なエラー処理設定については、​[「Mule 4 の概要: エラーハンドラー」](https://docs.mulesoft.com/jp/mule-runtime/4.5/intro-error-handlers)​を参照してください。 On Error Continue および On Error Propagate についての詳細は、​[「On-Error コンポーネント」](https://docs.mulesoft.com/jp/mule-runtime/4.5/on-error-scope-concept)​を参照してください。

### [](#global_error_handler)グローバルエラーハンドラーの参照

グローバルエラーハンドラーは、同じ方法でエラーを処理する複数のフローまたは Try スコープが必要な場合に役立つ可能性があります。エラーハンドラーへの参照を提供することで、再利用設定を作成できます。

- [グローバルエラー処理設定の定義](#global_error_config_set)
- [フローからのエラー処理設定の参照](#global_error_config_ref)

#### [](#global_error_config_set)グローバルエラー処理設定の定義

次の XML 設定では、​`<configuration doc:name="Configuration" defaultErrorHandler-ref="allErrorHandler" />`​ を使用して ​`<error-handler name="allErrorHandler"/>`​ 設定を参照するデフォルトのエラー処理設定を定義します。

```xml
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
  <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<http:request-config name="HTTP_Request_configuration" doc:name="HTTP Request configuration" >
  <http:request-connection host="json.typicode.com/" port="80" />
</http:request-config>
<configuration doc:name="Configuration" defaultErrorHandler-ref="allErrorHandler" />
<flow name="someFlow" >
  <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/users"/>
  <http:request method="GET" doc:name="Request" config-ref="HTTP_Request_configuration" path="/somebadrequest"/>
</flow>
<error-handler name="allErrorHandler" >
  <on-error-continue enableNotifications="true" logException="true" doc:name="On Error Continue" >
    <set-payload value="#[error.description]" doc:name="Set Payload" />
  </on-error-continue>
</error-handler>
```

Studio UI では、グローバルエラー処理の例は次のようになります。

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

この例には、エラーを処理するための 2 つの主要なコンポーネントが含まれます。Studio キャンバスに表示される埋め込みコンポーネントを含む Error Handler (​`error-handler`​) と、キャンバスに表示されないグローバルエラー処理設定です。 UI の例のフロー (​**someFlow**​) は、Error Handler コンポーネントが Mule アプリケーションのフローの外側にあることを示しています。

要求により HTTP:NOT\_FOUND​ エラーが生成されるため、Studio コンソールには、​`OnErrorContinueHandler`​ がエラーを処理していることを示すエラーメッセージが出力されます。 On Error Continue 設定では、処理するエラーが伝達されません (​[On-Error コンポーネントを使用したメッセージングエラーの処理](#on_error_continue)​ を参照)。

XML マークアップで設定を記述する代わりに Studio UI でグローバルエラー処理の例をセットアップする方法は、次のとおりです。

1. \[Error Handler\] コンポーネントを ​**\[Mule Palette (Mule パレット)\]**​ から Studio キャンバスにドラッグし、​**「allErrorHandler」**​という名前を付けます。
    
    このコンポーネントはどのフローにも含まれません。
2. \[On Error Continue\] コンポーネントを \[Error Handler\] コンポーネントにドラッグします。
3. \[Set Payload\] コンポーネントを \[On Error Continue\] コンポーネントにドラッグします。
    
    \[Set Payload\] コンポーネントは 1 つの例です。Logger など、他のコンポーネントを使用して、そのコンポーネント内で独自のエラーメッセージを記述することができます。Set Payload の例では、エラーの説明に Mule 変数を使用します (詳細は、​[「定義済み変数」](https://docs.mulesoft.com/dataweave/latest/dataweave-variables-context)​の ​`error`​ 変数を参照)。
4. Studio でグローバルエラー処理参照を作成します。
    
    1. **\[Global Elements (グローバル要素)\]**​ をクリックして ​**\[Global Configuration Elements (グローバル設定要素)\]**​ を開きます。
        
        **\[Global Elements (グローバル要素)\]**​ は Studio キャンバスの下にあります。
    2. **\[Global Configuration Elements (グローバル設定要素)\]**​ で ​**\[Create (作成)\]**​ をクリックして ​**\[Choose Global Type (グローバル種別の選択)\]**​ ダイアログを開きます。
        
        ![error handling global type](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/error-handling-global-type.png)
    3. ダイアログから ​**\[Global Configuration (グローバル設定)\]**​ -→ ​**\[Configuration (設定)\]**​ を選択し、​**\[OK\]**​ をクリックして、​**\[Configuration (設定)\]**​ ダイアログを開きます。
        
        ![error handling global config](/mulesoft/current/ja-jp/mule-runtime/4.5/_images/error-handling-global-config.png)
    4. **\[Configuration (設定)\]**​ ダイアログから、​**\[Default Error Handler (デフォルトのエラーハンドラー)\]**​ 項目で ​**\[allErrorHandler\]**​ を選択し、​**\[OK\]**​ をクリックします。
5. XML で記述された値を使用して、HTTP Listener および HTTP Request コンポーネントをセットアップします。
6. (Studio キャンバスの下にある) ​**\[Configuration XML (設定 XML)\]**​ をクリックして、XML 設定が正しいことを確認します。

### [](#global_error_config_ref)フローからのエラー処理設定の参照

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">この例の一部の要素の設定は XML のみです。</td></tr></tbody></table>

フローは、フローの外側にあるグローバルエラーハンドラーを参照できます。フローはそのすべてのエラーを、参照を介して記録します。

例: アプリケーションの XML 設定

```xml
<error-handler name="loggingErrorHandler">
    <on-error-continue>
        <logger message="#['Error: ' ++ error.description]"/>
    </on-error-continue>
</error-handler>

<flow name="withSharedHandler">
    <http:request url="http://example.com"/>
    <error-handler ref="loggingErrorHandler"/>
</flow>
```

この XML の例では、グローバルエラーハンドラーは、​`loggingErrorHandler`​ という名前の ​`<error-handler/>`​ 要素を介して設定されます。フローは ​`<error-handler ref="loggingErrorHandler"/>`​ を使用してエラーハンドラーを参照します。

Studio でフローからグローバルエラーハンドラー設定を参照する手順は、次のとおりです。

1. Studio で、​**\[Error Handler\]**​ コンポーネントを ​**\[Mule Palette (Mule パレット)\]**​ からキャンバスにドラッグし、UI を使用してそのコンポーネントを設定します。
2. Mule アプリケーションで、(Studio キャンバスの下にある) ​**\[Configuration XML (設定 XML)\]**​ をクリックします。
3. (XML のみの設定) ​`<flow/>`​ 要素内で、参照の XML を入力します (例: `<error-handler ref="loggingErrorHandler"/>`​)。

次の例では、​`<error-handler/>`​ 要素内の ​`<on-error ref="loggingErrorHandler"/>`​ を使用してグローバル On Error Continue 要素 (​`<on-error-continue/>`​) を参照します。 どちらも、UI ではなく、​**\[Configuration XML (設定 XML)\]**​ を介した手動設定が必要です。

```xml
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
	<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<on-error-continue name="loggingErrorHandler">
    <logger message="#['Error: ' ++ error.description]" level="INFO"/>
</on-error-continue>

<flow name="withSharedHandler">
  <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/"/>
  <http:request url="http://jsonplaceholder.typicode.com/badrequestbad" method="GET"/>
  <error-handler >
    <on-error ref="loggingErrorHandler"/>
  </error-handler>
</flow>
```

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

- [Mule エラー](https://docs.mulesoft.com/jp/mule-runtime/4.5/mule-error-concept)
- [On-Error コンポーネント](https://docs.mulesoft.com/jp/mule-runtime/4.5/on-error-scope-concept)
- [Try スコープ](https://docs.mulesoft.com/jp/mule-runtime/4.5/try-scope-concept)
- [Raise Error コンポーネント](https://docs.mulesoft.com/jp/mule-runtime/4.5/raise-error-component-reference)
- [Mule 4 の概要: エラーハンドラー](https://docs.mulesoft.com/jp/mule-runtime/4.5/intro-error-handlers)
- [Mule エラーハンドラーへの Exception Strategy (例外戦略) の移行](https://docs.mulesoft.com/jp/mule-runtime/4.5/migration-core-exception-strategies)