com.sun.jdi.event
インタフェース ExceptionEvent
- すべてのスーパーインタフェース:
- Event, Locatable, LocatableEvent, Mirror
- public interface ExceptionEvent
- extends LocatableEvent
ターゲット VM 内での例外の通知です。現在有効になっている例外要求
を満たす例外がスローされると、このクラスのインスタンスを含むイベントセット
がこの VM のイベントキューに追加されます。非ネイティブメソッドから例外がスローされる場合は、例外イベントは例外がスローされた位置で生成されます。ネイティブメソッドから例外がスローされる場合は、例外イベントは、例外がスローされたあとに最初に達した非ネイティブの位置で生成されます。
- 導入されたバージョン:
- 1.3
exception
public ObjectReference exception()
- スローされた例外オブジェクトを取得します。例外オブジェクトは、
Throwable
のインスタンス、またはターゲット VM 内のサブクラスになります。
- 戻り値:
- ターゲット VM でスローされたオブジェクトをミラー化する
ObjectReference
catchLocation
public Location catchLocation()
- 例外がキャッチされる位置を取得します。例外がスローされたときに、その例外を処理する try 文内で現在の位置が動的に囲まれている場合に、例外がキャッチされたと見なされます (詳細は、JVM 仕様を参照)。このような try 文がある場合は、キャッチの位置は適切な catch 節の最初のコードインデックスになります。
例外の発生時に呼び出しスタックにネイティブメソッドがある場合は、返されるキャッチの位置について重要な制約があります。この場合は、呼び出しスタックのネイティブメソッドによって例外が処理されるかどうかは予測できません。したがって、ここでキャッチされなかったと見なされた例外が、実際には、ネイティブメソッドによって処理されたため、ターゲット VM が終了しないことがあります。また、ここで返されたキャッチ位置に、スロー側のスレッドが達するかどうかも予測できません。現在の位置とキャッチ位置の間にネイティブフレームがある場合は、例外は、代わりにそのネイティブメソッドで処理され、解除されることがあります。
ソースコードに try-catch ブロックが明示的に指定されていない場合は、コンパイラによって try-catch ブロックが生成されることがあります。たとえば、synchronized
ブロックと finally
ブロックのコードが生成されたときに、暗黙の try-catch ブロックが生成されることがあります。例外がスローされたときに、呼び出しスタックにこのような暗黙に生成された try-catch が存在する場合は、例外は、ソースコードを調べてもキャッチされないように見える場合でも、キャッチされたと見なされます。
- 戻り値:
- 例外がキャッチされた
Location
。例外がキャッチされない場合は null