Module jdk.jdi

Interface ExceptionEvent

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

public interface ExceptionEvent extends LocatableEvent
目标VM中异常的通知。当抛出满足当前启用的异常请求的异常时,将向VM的事件队列添加一个包含此类实例的事件集。如果异常是从非本地方法抛出的,则异常事件在抛出异常的位置生成。如果异常是从本地方法抛出的,则异常事件在抛出异常后到达的第一个非本地位置生成。
自版本:
1.3
  • Method Details

    • exception

      ObjectReference exception()
      获取抛出的异常对象。异常对象是目标VM中的Throwable或其子类的实例。
      返回:
      一个ObjectReference,它在目标VM中反映了抛出的对象。
    • catchLocation

      Location catchLocation()
      获取异常将被捕获的位置。如果在抛出时,当前位置在动态地封闭在处理异常的try语句中,则认为异常已被捕获。(详见JVM规范)。如果存在这样的try语句,则捕获位置是适当catch子句的第一个代码索引。

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

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

      返回:
      异常将被捕获的位置,如果异常未被捕获则返回null。