Java Debug Interface

com.sun.jdi.event
インタフェース ExceptionEvent

すべてのスーパーインタフェース:
Event, Locatable, LocatableEvent, Mirror

public interface ExceptionEvent
extends LocatableEvent

ターゲット VM 内での例外の通知です。現在有効になっている 例外要求 を満たす例外がスローされると、このクラスのインスタンスを含むイベントセットがこの VM のイベントキューに追加されます。非ネイティブメソッドから例外がスローされる場合は、例外イベントは例外がスローされた位置で生成されます。ネイティブメソッドから例外がスローされる場合は、例外イベントは、例外がスローされたあとに最初に達した非ネイティブの位置で生成されます。

導入されたバージョン:
1.3

メソッドの概要
 Location catchLocation()
          例外がキャッチされる位置を取得します。
 ObjectReference exception()
          スローされた例外オブジェクトを取得します。
 
インタフェース com.sun.jdi.event.LocatableEvent から継承されたメソッド
thread
 
インタフェース com.sun.jdi.event.Event から継承されたメソッド
request
 
インタフェース com.sun.jdi.Mirror から継承されたメソッド
toString, virtualMachine
 
インタフェース com.sun.jdi.Locatable から継承されたメソッド
location
 

メソッドの詳細

exception

ObjectReference exception()
スローされた例外オブジェクトを取得します。例外オブジェクトは、Throwable のインスタンス、またはターゲット VM 内のサブクラスになります。

戻り値:
ターゲット VM でスローされたオブジェクトをミラー化する ObjectReference

catchLocation

Location catchLocation()
例外がキャッチされる位置を取得します。例外がスローされたときに、その例外を処理する try 文内で現在の位置が動的に囲まれている場合に、例外がキャッチされたと見なされます (詳細は、JVM 仕様を参照)。このような try 文がある場合は、キャッチの位置は適切な catch 節の最初のコードインデックスになります。

例外の発生時に呼び出しスタックにネイティブメソッドがある場合は、返されるキャッチの位置について重要な制約があります。この場合は、呼び出しスタックのネイティブメソッドによって例外が処理されるかどうかは予測できません。したがって、ここでキャッチされなかったと見なされた例外が、実際には、ネイティブメソッドによって処理されたため、ターゲット VM が終了しないことがあります。また、ここで返されたキャッチ位置に、スロー側のスレッドが達するかどうかも予測できません。現在の位置とキャッチ位置の間にネイティブフレームがある場合は、例外は、代わりにそのネイティブメソッドで処理され、解除されることがあります。

ソースコードに try-catch ブロックが明示的に指定されていない場合は、コンパイラによって try-catch ブロックが生成されることがあります。たとえば、synchronized ブロックと finally ブロックのコードが生成されたときに、暗黙の try-catch ブロックが生成されることがあります。例外がスローされたときに、呼び出しスタックにこのような暗黙に生成された try-catch が存在する場合は、例外は、ソースコードを調べてもキャッチされないように見える場合でも、キャッチされたと見なされます。

戻り値:
例外がキャッチされた Location。例外がキャッチされない場合は null

Java Debug Interface