6

重複の可能性:
JDK 1.7 スロー可能な `addSuppressed()` メソッド

したがって、JavaにはThrowableにメソッドがあります

public final void addSuppressed(Throwable exception) 

そして、これはそれが何をするかです:

この例外を配信するために抑制された例外に、指定された例外を追加します。このメソッドはスレッドセーフであり、通常は try-with-resources ステートメントによって (自動的かつ暗黙的に) 呼び出されます。

..私はこれに困惑しています、「この例外を配信するために抑制された例外に対する指定された例外」とは何ですか。?

4

1 に答える 1

1

ドキュメントにはかなり良い説明があります:Throwable

コンストラクターを介して無効にしない限り、抑制動作は有効になります。抑制が無効になっている場合、このメソッドはその引数を検証する以外に何もしません。

1 つの例外が別の例外を引き起こした場合、通常は最初の例外がキャッチされ、それに応じて 2 番目の例外がスローされることに注意してください。つまり、2 つの例外の間には因果関係があります。対照的に、兄弟コード ブロック、特に try-with-resources ステートメントの try ブロックと、リソースを閉じるコンパイラ生成の finally ブロックで、2 つの独立した例外がスローされる可能性がある状況があります。このような状況では、スローされた例外の 1 つだけを伝播できます。try-with-resources ステートメントでは、そのような例外が 2 つある場合、try ブロックから発生した例外が伝播され、finally ブロックからの例外が、try ブロックからの例外によって抑制された例外のリストに追加されます。例外としてスタックをアンワインドし、

例外は、別の例外によって引き起こされている間に、例外を抑制した可能性があります。例外に原因があるかどうかは、通常、例外がスローされた後にのみ決定される例外が他の例外を抑制するかどうかとは異なり、作成時に意味的にわかっています。

プログラマーが記述したコードは、複数の兄弟例外があり、伝播できる例外が 1 つしかない状況でも、このメソッドを呼び出すことができることに注意してください。

于 2012-12-06T18:13:42.373 に答える