模块  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子句的第一个代码索引。

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

        请注意,编译器可以在某些情况下生成try-catch块,它们在源代码中不明确; 例如,为synchronizedfinally块生成的代码可以包含隐式try-catch块。 如果在抛出时调用堆栈上存在这样一个隐式生成的try-catch,则异常将被视为捕获,即使它似乎未检查源代码。

        结果
        Location将捕获异常,如果异常未被捕获,则返回null。