Ciascun frammento definito richiede una specifica di tipi. Il tipo indica quando il frammento verrà eseguito nei metodi di destinazione. Un probe può contenere più di un frammento, ma non di qualsiasi tipo.
Tipo di frammento | Method o Callsite | Descrizione |
---|---|---|
entry | Method | I frammenti entry vengono eseguiti in base all'immissione del metodo. I frammenti entry non verranno eseguiti per i metodi che sono stati inseriti nella classe da Probekit. |
exit | Method | I frammenti exit vengono eseguiti al termine del metodo, sia nel caso di un'uscita regolare, ossia quando un metodo lancia un'eccezione, sia nel caso in cui un'eccezione lanciata si propaghi all'esterno del metodo. I frammenti exit non verranno eseguiti per i metodi che sono stati inseriti nella classe da Probekit. |
catch | Method | I frammenti catch vengono eseguiti all'inizio di una proposizione catch nel metodo oppure all'inizio di una proposizione finally che viene eseguita come risultato di un'eccezione. |
staticInitializer | Method | I frammenti staticInitializer vengono eseguiti all'interno dell'inizializzatore di classi di ciascuna classe con probe. Se la classe non dispone di un inizializzatore, ne viene creato uno. Per ulteriori informazioni, vedere Frammento probe staticInitializer. |
executableUnit | Method | I frammenti executableUnit vengono eseguiti prima di ciascuna unità eseguibile di codice nei metodi che soddisfano le regole e i filtri specificati e per i quali è disponibile codice di origine. Se il metodo non dispone di informazioni sulle righe del codice di origine, sembrerà contenere una singola unità eseguibile, di numero zero. Per ulteriori informazioni, vedere Frammento probe executableUnit. |
beforeCall | Callsite | I frammenti beforeCall vengono eseguiti nel metodo che esegue la chiamata, immediatamente prima che il metodo di destinazione venga richiamato. Non è valido per i probe method. |
afterCall | Callsite | I frammenti afterCall vengono eseguiti nel metodo che esegue la chiamata, immediatamente dopo la fine del metodo di destinazione, sia nel caso di un'uscita regolare o nel caso in cui il metodo di destinazione lanci un'eccezione. Non è valido per i probe method. |
un probe può disporre di più frammenti che si applicano alla stessa posizione all'interno di un metodo: ad esempio, un frammento entry e la prima posizione di executableUnit. Un altro esempio è il frammento catch e la posizione di executableUnit associata, perché la proposizione catch per la gestione delle eccezioni, rappresenta sempre l'inizio di una nuova unità eseguibile. In questi casi, il codice del frammento executableUnit verrà eseguito dopo il codice del frammento entry o catch. Di conseguenza, eventuali frammenti entry verranno sempre eseguiti prima di tutti gli altri tipi di frammenti.
Non è possibile combinare frammenti method e callsite in un singolo probe, ma è possibile avere probe method e probe callsite nello stesso file di origine Probekit (file probe).
Per specificare un tipo di frammento, selezionare Frammento nella struttura ad albero nella pagina Probe ed effettuare la selezione dall'elenco Tipo di frammenti nel riquadro di modifica.