public interface ExceptionEvent extends LocatableEvent
exception request
を満たす例外がスローされると、このクラスのインスタンスを含んでいる event set
が VM のイベントキューに追加されます。例外が非ネイティブメソッドからスローされた場合、例外イベントは例外がスローされた位置で生成されます。例外がネイティブメソッドからスローされた場合、例外がスローされたあとに到達した最初の非ネイティブ位置で例外イベントが生成されます。修飾子と型 | メソッドと説明 |
---|---|
Location |
catchLocation()
例外がキャッチされる位置を取得します。
|
ObjectReference |
exception()
スローされた例外オブジェクトを取得します。
|
thread
toString, virtualMachine
ObjectReference exception()
Throwable
またはサブクラスのインスタンスです。ObjectReference
。Location catchLocation()
例外の発生時に呼び出しスタック内にネイティブメソッドが存在する場合は、返されるキャッチ位置について注意すべき重要な制限があります。そのような場合、呼び出しスタック上のネイティブメソッドによって例外が処理されるかどうかは予測できません。そのため、ここでキャッチされないと考えられる例外が、実際にはネイティブメソッドによって処理され、ターゲット VM を終了させない可能性があります。さらに、ここで返されるキャッチ位置に、例外をスローしたスレッドが到達すると見なすこともできません。現在位置とキャッチ位置との間にネイティブフレームが存在する場合には、例外が代わりにネイティブメソッド内で処理され、クリアされる可能性があります。
ソースコードに try-catch ブロックが明示的に指定されていない場合は、コンパイラによって try-catch ブロックが生成されることがあります。たとえば、synchronized
ブロックと finally
ブロックのために生成されたコードに暗黙の try-catch ブロックが含まれることがあります。例外のスロー時にその種の暗黙的に生成された try-catch ブロックが呼び出しスタック上に存在する場合は、ソースコード上では例外がキャッチされないように見えるとしても、例外がキャッチされると考えられます。
Location
、または例外がキャッチされない場合は null。
Copyright © 1999, 2013, Oracle and/or its affiliates. All rights reserved.