-
- All Superinterfaces:
-
Event
,Locatable
,LocatableEvent
,Mirror
public interface ExceptionEvent extends LocatableEvent
通知目标VM中的异常。 当抛出一个满足当前已启用的exception request
的异常时 ,将包含此类的实例的event set
添加到VM的事件队列中。 如果从非本机方法抛出异常,则会在抛出异常的位置生成异常事件。 如果从本机方法抛出异常,则异常事件将在抛出异常后到达的第一个非本机位置生成。- 从以下版本开始:
- 1.3
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 Location
catchLocation()
获取异常被捕获的位置。ObjectReference
exception()
获取抛出的异常对象。-
Methods inherited from interface com.sun.jdi.event.LocatableEvent
thread
-
Methods inherited from interface com.sun.jdi.Mirror
toString, virtualMachine
-
-
-
-
方法详细信息
-
exception
ObjectReference exception()
获取抛出的异常对象。 异常对象是Throwable
的实例或目标VM中的子类。- 结果
-
一个
ObjectReference
镜像目标VM中抛出的对象。
-
catchLocation
Location catchLocation()
获取异常被捕获的位置。 如果在抛出点处将当前位置动态地包含在处理异常的try语句中,则会被捕获异常。 (有关详细信息,请参阅JVM规范)。 如果有这样的try语句,catch位置是适当的catch子句的第一个代码索引。如果在异常时调用堆栈中存在本机方法,则有关返回的捕获位置的重要限制。 在这种情况下,无法预测一个异常是否会被调用堆栈上的一些本机方法处理。 因此,这里可能考虑未被考虑的异常实际上将由本机方法处理,而不会导致目标VM的终止。 此外,不能假定这里返回的捕获位置将由投掷线程达到。 如果当前位置和捕获位置之间存在本机帧,则可能会以该本机方法处理和清除该异常。
请注意,编译器可能会在源代码中不显式的情况下生成try-catch块; 例如,为
synchronized
和finally
块生成的代码可以包含隐式的try-catch块。 如果在抛出时在调用堆栈中存在这样一个隐式生成的try-catch,即使看起来没有考虑到源代码,异常也被认为被捕获。- 结果
-
Location
其中异常将被捕获,如果异常未被捕获,则为null。
-
-