Chaque fragment que vous définissez nécessite une spécification de type. Le type indique quand le fragment s'exécutera dans les méthodes ciblées. Une sonde peut contenir plus d'un fragment, mais pas plus d'un fragment de chaque type.
Type de fragment | Méthode ou site d'appel | Description |
---|---|---|
entry | Méthode | Les fragments entry s'exécutent à l'entrée de la méthode. Les fragments entry ne s'exécutent pas pour des méthodes insérées dans la classe par Probekit. |
exit | Méthode | Les fragments exit s'exécutent à la sortie de la méthode : la sortie est normale lorsque la méthode lance une exception ou que l'exception lancée se propage hors de la méthode. Les fragments exit ne s'exécutent pas pour des méthodes insérées dans la classe par Probekit. |
catch | Méthode | Les fragments catch s'exécutent au début d'une clause catch dans la méthode ou d'une clause finally s'exécutant comme résultat d'une exception. |
staticInitializer | Méthode | Les fragments staticInitializer s'exécutent à l'intérieur de l'initialiseur de chaque classe sondée. Un initialiseur statique sera créé si la classe n'en possède pas. Pour plus d'informations, voir Le type de fragment de sonde staticInitializer. |
executableUnit | Méthode | Les fragments executableUnit s'exécutent avant chaque unité exécutable de code dans les méthodes respectant la spécification de filtre et de cible de la sonde et pour lesquelles le code source est disponible. Si la méthode ne possède pas les informations source sur les lignes, elle inclura une seule unité exécutable numérotée zéro. Pour plus d'informations, voir Le type de fragment de sonde executableUnit. |
beforeCall | Site d'appel | Les fragments beforeCall s'exécutent dans la méthode appelante, juste avant l'appel de la méthode cible. Non accepté pour des sondes de méthode. |
afterCall | Site d'appel | Les fragments afterCall s'exécutent dans la méthode appelante, juste après la sortie de la méthode cible (sortie normale ou lorsque la méthode cible lance une exception). Non accepté pour des sondes de méthode. |
Une sonde peut comporter plusieurs fragments s'appliquant au même endroit dans une méthode. Par exemple, un fragment entry et le premier emplacement executableUnit. Autre exemple : un fragment catch et l'emplacement executableUnit associé, sachant que les clauses catch gérant les exceptions marquent toujours le début d'une nouvelle unité exécutable. Dans ces cas de figure, le code du fragment executableUnit s'exécute après celui du fragment entry ou catch. Par conséquent, les éventuels fragments entry s'exécuteront toujours avant d'autres types de fragments.
Vous ne pouvez pas combiner des fragments méthode et des fragments de site d'appel dans une même sonde, mais vous pouvez avoir des sondes de méthode et des sondes de site d'appel dans le même fichier source Probekit (fichier probe).
Pour spécifier un type de fragment, sélectionnez une entrée Fragment dans le panneau d'arborescence de la page Sondes, et faites une sélection dans la liste Type de fragments du panneau d'édition.