---
schema_version: "1"
id: 25c1492b9d2f03ce77b42406d65bfc5d3747cab53da0e9a7ebfa9b25497018bb
title: Throwable の処理
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/java-module/latest/java-throwable.md
canonical_url: https://docs.mulesoft.com/jp/java-module/latest/java-throwable
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 04b85516f6f6ce5a11c071274256e760eeac0b3b77588ffaa0c99a36baffd5f8
description: MuleSoft Documentation Site
release: "2.0"
latest: true
---
# Throwable の処理

Java Module は、Throwable インスタンスに有益な DataWeave 関数を公開します。 (Java では、Throwable は ​`throw`​ ステートメントです)。

これらの関数は DataWeave バージョン 1.2.0 以降で使用可能になりました。

## [](#原因の確認)原因の確認

`isCausedBy`​ 関数を使用して、Throwable の原因が特定の種別の例外であったのかどうかを確認できます。これは、​[エラーハンドラー](https://docs.mulesoft.com/mule-runtime/latest/mule-error-concept)​にロジックを追加するときに特に役立ちます。

```java
package com.me;

public class TaxCalculator {

	public Double calculateTax(Double price) {
		if (price == null) {
			throw new NullPointerException("Must provide a value for price");
		}
		if (price < 0) {
			throw new IllegalArgumentException("Price must be a non-negative value, but was: " + price);
		}
		return price * 0.21;
	}
}
```

`calculateTax(Double price)`​ メソッドは、​`IllegalArgumentException`​ および ​`NullPointerException`​ 例外を宣言します。

次のコード例は、​[`invoke`​ 操作](https://docs.mulesoft.com/jp/java-module/latest/java-invoke-method)​の実行中にエラーをスローするフローの部分をリストします。

`calculateTax(Double price)`​ メソッドの失敗した呼び出し中に発生した Java 例外を確認するには、エラーハンドラーで ​`isCausedBy`​ 関数を使用して、ケースごとに異なるロジックを追加します。

```xml
<java:new class="com.me.TaxCalculator"
	constructor="TaxCalculator()"
	target="taxCalculator"/>
<java:invoke instance="#[vars.taxCalculator]"
	class="com.me.TaxCalculator"
	method="calculateTax(Double)">
    <java:args>#[{price: payload.price}]</java:args>
</java:invoke>
<error-handler>
    <on-error-continue
    	when="#[Java::isCausedBy(error.cause, 'java.lang.IllegalArgumentException')]">
        <set-payload value="Negative prices are not allowed."/>
    </on-error-continue>
    <on-error-continue
    	type="#[Java::isCausedBy(error.cause, 'java.lang.NullPointerException')]">
        <set-payload value="There is no price."/>
    </on-error-continue>
</error-handler>
```

## [](#根本原因の取得)根本原因の取得

`getRootCause`​ 関数は、例外のラップとは関係のない Throwable の根本原因を取得します。

次の例では、税額計算のエラーはすべて、Throwable の根本原因を取得する ​`handle(Throwable)`​ メソッドが含まれる ​`FailureHandler`​ クラスで処理されます。それを可能にするため、​`getRootCause`​ 関数を使用して、根本原因を ​`handle(Throwable)`​ メソッドに引数として渡すことができます。

```xml
<java:new class="com.me.TaxCalculator"
  constructor="TaxCalculator()"
  target="taxCalculator"/>
<java:invoke instance="#[vars.taxCalculator]"
  class="com.me.TaxCalculator"
  method="calculateTax(Double)">
    <java:args>#[{price: payload.price}]</java:args>
</java:invoke>
<error-handler>
    <on-error-continue>
      <java:invoke-static
      	class="com.me.FailureHandler"
	method="handle(Throwable)">
          <java:args>#[{cause: Java::getRootCause(error.cause)}]</java:args>
      </java:invoke-static>
    </on-error-continue>
</error-handler>
```

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

- [Mule エラーについて](https://docs.mulesoft.com/mule-runtime/latest/mule-error-concept)