モジュール jdk.jdi
パッケージ com.sun.jdi.event

インタフェースExceptionEvent

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


    public interface ExceptionEvent
    extends LocatableEvent
    ターゲットVMの例外通知。 現在有効なexception requestを満たす例外がスローされると、このクラスのインスタンスを含んでいるevent setがVMのイベント・キューに追加されます。 例外が非ネイティブ・メソッドからスローされた場合、例外イベントは例外がスローされた位置で生成されます。 例外がネイティブ・メソッドからスローされた場合、例外がスローされたあとに到達した最初の非ネイティブ位置で例外イベントが生成されます。
    導入されたバージョン:
    1.3
    • メソッドの詳細

      • exception

        ObjectReference exception​()
        スローされた例外オブジェクトを取得します。 例外オブジェクトは、ターゲットVM内のThrowableまたはサブクラスのインスタンスです。
        戻り値:
        ターゲットVM内でスローされたオブジェクトをミラー化するObjectReference
      • catchLocation

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

        例外の発生時に呼出しスタック内にネイティブ・メソッドが存在する場合は、返されるキャッチ位置について注意すべき重要な制限があります。 そのような場合、呼出しスタック上のネイティブ・メソッドによって例外が処理されるかどうかは予測できません。 そのため、ここでキャッチされないと考えられる例外が、実際にはネイティブ・メソッドによって処理され、ターゲットVMを終了させない可能性があります。 さらに、ここで返されるキャッチ位置に、例外をスローしたスレッドが到達すると見なすこともできません。 現在位置とキャッチ位置との間にネイティブ・フレームが存在する場合には、例外が代わりにネイティブ・メソッド内で処理され、クリアされる可能性があります。

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

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