Raise Error (<raise-error/>)

logo cloud IDE Cloud IDE

logo desktop IDE Desktop IDE

エラーが発生したことを示す Mule エラーを生成します。

エラーの説明と種別をカスタマイズできます。このコンポーネントは、次のエラーを生成するために使用します。

  • MULE:SECURITY​、​MULE:CONNECTIVITY​ などのコアランタイムエラー。

  • カスタムエラー種別。

別のコネクタや ​FILE:FILE_NOT_FOUND​ や ​JSON:INVALID_SCHEMA​ などのモジュールからエラーを発生させることはできません。コネクタの既存の名前空間を使用することはできません。

コンポーネント XML

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

<raise-error
  type="MULE:CONNECTIVITY"
  description="Error description message" />
<raise-error/>​ Attributes 説明

doc:name

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

doc:id

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

type

エラーの種別。

description

エラーの説明。

次の例は、API 要求の作成中にユーザーが無効な値を指定したときにカスタムエラーを発生させる方法と、API 応答で受信した値を比較した後にカスタムエラーを発生させる方法を示しています。

例: 無効なユーザー入力後のエラーの発生

次の運転教習プラットフォームの例では、ユーザーが 16 歳以上であることを確認します。ユーザーが 16 歳未満の年齢を入力すると、フローでカスタム ​PRECONDITIONS:INCORRECT_AGE​ エラーが生成されます。

<http:listener-config name="HTTP_Listener_config">
  <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="raise-error-example-flow">
  <http:listener config-ref="HTTP_Listener_config" path="/test"/>
  <choice> (1)
    <when expression="#[message.attributes.queryParams.age &lt; 16]"> (2)
      <raise-error type="PRECONDITIONS:INCORRECT_AGE" description="Minimum age of 16 required to drive" />
    </when>
    <otherwise > (3)
      <logger level="INFO" message="User age above 16 years. Allowed to drive"/>
    </otherwise>
  </choice>
  <error-handler >
    <on-error-continue enableNotifications="true" logException="true" type="PRECONDITIONS:INCORRECT_AGE"> (4)
      <logger level="INFO" message="Minimum age to drive is 16 years old"/>
    </on-error-continue>
    <on-error-continue enableNotifications="true" logException="true"  type="MULE:EXPRESSION"> (5)
      <logger level="INFO" message="The parameter age is missing or invalid"/>
    </on-error-continue>
  </error-handler>
</flow>
1 Choice Router コンポーネントにより、条件処理がフローに追加されます。
2 要求で送信された age パラメーターが 16 (​http://localhost:8081/test?age=15​) 未満の場合、Raise Error コンポーネントでエラー種別 ​PRECONDITIONS:INCORRECT_AGE​ と説明 ​Minimum age of 16 required to drive​ が生成されます。
3 要求 (​http://localhost:8081/test?age=17​) の age パラメーターが 16 より大きい場合、Logger コンポーネントでデフォルトのメッセージ ​User age above 16 years. Allowed to drive​ が返されます。
4 On-Error Continue コンポーネントでエラー ​PRECONDITIONS:INCORRECT_AGE​ の種別が照合され、そのスコープ内で Logger コンポーネントが実行されます。Logger コンポーネントによってエラーメッセージ ​Minimum age of 16 required to drive​ が記録されます。
5 要求 (​http://localhost:8081/test​) で age パラメーターが渡されない場合、式 ​#[message.attributes.queryParams.age < 16]​ を評価しようとしたときに Choice コンポーネントで自動的に ​MULE:EXPRESSION​ エラーが生成されます。要求で age パラメーターが指定されなかったため、その値は null です。

次に、On-Error Continue コンポーネントでエラー ​MULE:EXPRESSION​ の種別が照合され、そのスコープ内で Logger コンポーネントが実行されます。Logger コンポーネントによってメッセージ ​The parameter age is missing or invalid​ が返されます。

例: 値を比較した後のエラーの発生

次の例では、API (https://unsecurebank.com/balance) に対する要求を行って返された口座残高を ​balance​ 変数に保存し、​payload.amount​ と比較して操作が可能かどうかを判断します。振込金額が利用可能残高を超えると Choice Router で ​ACCOUNT:INSUFFICIENT_FUNDS​ エラーが生成され、振込が行われないようにします。説明では、エラーの詳細が動的に提供されます。

<flow name="raise-error-example-flow">
  <http:request url="https://unsecurebank.com/balance" target="balance"/>
  <choice>
    <when expression="#[payload.amount > vars.balance]">
      <raise-error type="ACCOUNT:INSUFFICIENT_FUNDS" description="#['Cannot transfer $(payload.amount) since only $(vars.balance) are available.']"/>
    </when>
  </choice>
  <http:request url="https://unsecurebank.com/transfer"/>
</flow>