Module  jdk.jdi
软件包  com.sun.jdi.event

Interface ExceptionEvent

  • All Superinterfaces:
    EventLocatableLocatableEventMirror


    public interface ExceptionEvent
    extends LocatableEvent
    通知目标VM中的异常。 当抛出一个满足当前已启用的exception request的异常时 ,将包含此类的实例的event set添加到VM的事件队列中。 如果从非本机方法抛出异常,则会在抛出异常的位置生成异常事件。 如果从本机方法抛出异常,则异常事件将在抛出异常后到达的第一个非本机位置生成。
    从以下版本开始:
    1.3
    • 方法详细信息

      • exception

        ObjectReference exception​()
        获取抛出的异常对象。 异常对象是Throwable的实例或目标VM中的子类。
        结果
        一个ObjectReference镜像目标VM中抛出的对象。
      • catchLocation

        Location catchLocation​()
        获取异常被捕获的位置。 如果在抛出点处将当前位置动态地包含在处理异常的try语句中,则会被捕获异常。 (有关详细信息,请参阅JVM规范)。 如果有这样的try语句,catch位置是适当的catch子句的第一个代码索引。

        如果在异常时调用堆栈中存在本机方法,则有关返回的捕获位置的重要限制。 在这种情况下,无法预测一个异常是否会被调用堆栈上的一些本机方法处理。 因此,这里可能考虑未被考虑的异常实际上将由本机方法处理,而不会导致目标VM的终止。 此外,不能假定这里返回的捕获位置将由投掷线程达到。 如果当前位置和捕获位置之间存在本机帧,则可能会以该本机方法处理和清除该异常。

        请注意,编译器可能会在源代码中不显式的情况下生成try-catch块; 例如,为synchronizedfinally块生成的代码可以包含隐式的try-catch块。 如果在抛出时在调用堆栈中存在这样一个隐式生成的try-catch,即使看起来没有考虑到源代码,异常也被认为被捕获。

        结果
        Location其中异常将被捕获,如果异常未被捕获,则为null。