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