您定义的每个段都需要一个类型指定。类型指示何时将在目标方法中运行段。一个探针可以包含多个段,但不能包含任何给定类型的多个段。
段类型 | 方法或调用位置 | 描述 |
---|---|---|
entry | 方法 | entry 段在方法进入时运行。对于由 Probekit 插入到类中的方法,entry 段将不会运行。 |
exit | 方法 | exit 段在方法退出时(正常退出、当方法抛出异常时退出或抛出的异常传播到方法外部时退出)运行。对于由 Probekit 插入到类中的方法,exit 段将不会运行。 |
catch | 方法 | catch 段在方法中的 catch 子句的开头运行,或者在由于发生异常而执行的 finally 子句的开头运行。 |
staticInitializer | 方法 | staticInitializer 段在每个探测类的类初始化方法内运行。如果该类没有静态初始化方法,则将创建一个静态初始化方法。有关更多信息,请参阅 staticInitializer 探针段类型。 |
executableUnit | 方法 | executableUnit 段在符合下列条件的方法中的代码的每个可执行单元之前运行:符合探针的目标和过滤器规范并且为其提供了源代码。如果该方法没有源代码行信息,它将以具有单个可执行单元(编号为零)的形式出现。有关更多信息,请参阅 executableUnit 探针段类型。 |
beforeCall | 调用位置 | beforeCall 段刚好在调用目标方法之前在调用方法中运行。这种段类型对于方法探针无效。 |
afterCall | 调用位置 | afterCall 段在目标方法退出(正常退出或者当目标方法抛出异常时退出)之后立即在调用方法中运行。这种段类型对于方法探针无效。 |
一个探针中可以有应用于方法中的同一位置的多个段:例如,entry 段和第一个 executableUnit 位置。另一个示例是 catch 段和与它相关联的 executableUnit 位置,因为用于异常处理的 catch 子句总是表示新的可执行单元的开始。在这些情况下,executableUnit 段的代码将在 entry 或 catch 段的代码之后运行。有一种情况是,如果存在 entry 段,则它将总是在其他类型的段之前运行。
不能将方法段和调用位置段混用在单个探针中,但在同一 Probekit 源文件(probe 文件)中可以同时具有方法探针和调用位置探针。
要指定段类型,在“探针”页的树窗格中选择段条目,并从编辑窗格的“段类型”列表中选择一个段类型。