---
schema_version: "1"
id: 0f488365253ea77cef0fa7c5f14fd456cdbfd5451805a100f3ddfa5373fe6532
title: エラー定義
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-sdk/1.1/errors.md
canonical_url: https://docs.mulesoft.com/jp/mule-sdk/1.1/errors
source_site: docs.mulesoft.com
content_type: documentation
content_hash: e192a600a3f42fb0a29dc4156a6fbb201c03d179bbd34509102bf6d204e70301
description: MuleSoft Documentation Site
release: "1.1"
latest: false
---
# エラー定義

Mule では、エラーとは、何か問題が発生したことを伝達し、意味のある情報を提供することで、ユーザーがスローされたエラーの種類に応じて修正措置を取ることができるようにする方法です。

詳細は、​[「エラー処理について」](#4.1@mule-runtime::error-handling.adoc)​を参照してください。

## [](#モジュールエラーの定義)モジュールエラーの定義

最初のステップは、モジュールによってスローされる可能性があるすべてのエラーを定義することです。これを行うには、​`ErrorTypeDefinition`​ インターフェースを実装する ​`enum`​ を定義します。 この ​`enum`​ で定義された各値はエラーとみなされます。

```java
public enum SimpleError implements ErrorTypeDefinition<SimpleError> {
      INVALID_PARAMETER,
      TIME_OUT,
      NOT_ALLOWED
}
```

### [](#エラー階層)エラー階層

モジュールエラーは、同じモジュールのエラー (同じ ​`enum`​ の値) または Mule エラーからのみ継承できます。Mule エラーは、 ​`org.mule.runtime.extension.api.error.MuleErrors`​ で定義されます。

親エラーを定義していないエラーは、自動的に ​`MULE:ANY`​ から継承されます。

```java
public enum HierarchalError implements ErrorTypeDefinition<HierarchalError> {
    INVALID_PARAMETER,
    TIME_OUT,
    NOT_ALLOWED,
    ILLEGAL_ACTION(NOT_ALLOWED),
    BAD_CREDENTIALS(MuleErrors.CONNECTIVITY);

    private ErrorTypeDefinition<? extends Enum<?>> parent;

    HierarchalError(ErrorTypeDefinition<? extends Enum<?>> parent) {
        this.parent = parent;
    }

    HierarchalError() {
    }

    @Override
    public Optional<ErrorTypeDefinition<? extends Enum<?>>> getParent() {
        return Optional.ofNullable(parent);
    }
}
```

### [](#モジュールのエラーの登録)モジュールのエラーの登録

`@Extension`​ アノテーションが付加されたクラスは、モジュールが処理するエラーを示すために ​`@ErrorTypes`​ のアノテーションが付加されている必要があります。このアノテーションは、定義されたエラーを含む ​`ErrorTypeDefinition`​ ​`enum`​ を参照します。

```java
@Extension(name = "Foo")
@ErrorTypes(HierarchalError.class)
@Xml(prefix = "test-connector")
public class FooExtension {
  // Content
}
```

## [](#スローされる可能性があるエラーの指定)スローされる可能性があるエラーの指定

モジュールで発生する可能性があるすべてのエラーを宣言したら、それらをスロー する可能性がある操作にエラーをバインドする情報を提供する必要があります。

これを行うには、​`ErrorTypeProvider`​ を実装する必要があります。これは、操作によってスロー される可能性があるエラーを伝達するクラスです。

```java
public class ExecuteErrorsProvider implements ErrorTypeProvider {
    @Override
    public Set<ErrorTypeDefinition> getErrorTypes() {
        HashSet<ErrorTypeDefinition> errors = new HashSet<>();
        errors.add(HierarchalErrors.INVALID_PARAMETER);
        errors.add(HierarchalErrors.BAD_CREDENTIALS);
        errors.add(HierarchalErrors.ILLEGAL_ACTION);
        return errors;
    }
}
```

`ErrorTypeProvider`​ を定義したら、それを適切な操作にバインドする 必要があります。次のように、操作レベルで ​`@Throws`​ アノテーションを使用してバインドします。

```java
@Throws(ExecuteErrorsProvider.class)
public void execute(){
  // operation body
}
```

Studio または Flow Designer で、​`@Throws`​ アノテーションが付加された操作は、その操作がスローする可能性があるエラーについてのヒントをユーザーに提供します。

![studio errors](/mulesoft/current/ja-jp/mule-sdk/1.1/_images/studio-errors.gif)

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

```xml
<flow name="flowName">
  <try>
    <test-connector:execute/>
    <error-handler >
      <on-error-continue type="TEST-CONNECTOR:ILLEGAL_ACTION">
        <logger level="INFO" message="#[error]"/>
      </on-error-continue>
    </error-handler>
  </try>
</flow>
```

## [](#エラーのスロー)エラーのスロー

エラーは、特定のエラーにバインドされている Java 例外の Mule 表現です。

エラーと例外の間に静的なバインドはありません。エラーを伝達 するには、操作が ​`org.mule.runtime.extension.api.exception.ModuleException`​ または このクラスの子例外をスローし、コンストラクター内でスローする目的の ​`ErrorTypeDefinition`​ を示す必要があります。

```java
@Throws(ExecuteErrorsProvider.class)
public void execute(){
  try {
      throw new IllegalStateException();
  } catch (IllegalStateException e){
      throw new ModuleException(HierarchalErrors.ILLEGAL_ACTION, e);
  }
}
```

また、このロジックを新しい例外クラス内にラップすることをお勧めします。

```java
public final class IllegalActionException extends ModuleException {

  public IllegalActionException(Exception cause) {
    super(HierarchalErrors.ILLEGAL_ACTION, cause);
  }
}
```

<table><tbody><tr><td class="icon"><i class="fa icon-warning" title="Warning"></i></td><td class="content">操作の ​<code>ErrorTypeProvider</code>​ で宣言されていないエラーをスローすると、 予期せぬエラーの例外が発生します。操作で宣言されていないエラーをスローすることはできません。</td></tr></tbody></table>