模块 jdk.jdi

接口 ExceptionEvent

所有父级接口:
Event , Locatable , LocatableEvent , Mirror

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。