IDebugStackFrame3::InterceptCurrentException
Chiamato dal debugger nel frame dello stack corrente quando vuole intercettare l'eccezione corrente.
Sintassi
Parametri
dwFlags
[in] Specifica azioni diverse. Attualmente è supportato solo il valore IEA_INTERCEPT
INTERCEPT_EXCEPTION_ACTION e deve essere specificato.
pqwCookie
[out] Valore univoco che identifica una particolare eccezione.
Valore restituito
Se ha esito positivo, restituisce S_OK; in caso contrario, restituisce un codice di errore.
Di seguito è riportato l'errore più comune restituito.
Errore | Descrizione |
---|---|
E_EXCEPTION_CANNOT_BE_INTERCEPTED |
Impossibile intercettare l'eccezione corrente. |
E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK |
Il frame di esecuzione corrente non è ancora stato cercato un gestore. |
E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED |
Questo metodo non è supportato per questo frame. |
Osservazioni:
Quando viene generata un'eccezione, il debugger ottiene il controllo dalla fase di esecuzione in punti chiave durante il processo di gestione delle eccezioni. Durante questi momenti chiave, il debugger può chiedere al frame dello stack corrente se il frame vuole intercettare l'eccezione. In questo modo, un'eccezione intercettata è essenzialmente un gestore eccezioni on-the-fly per uno stack frame, anche se tale stack frame non dispone di un gestore eccezioni (ad esempio, un blocco try/catch nel codice del programma).
Quando il debugger vuole sapere se l'eccezione deve essere intercettata, chiama questo metodo sull'oggetto stack frame corrente. Questo metodo è responsabile della gestione di tutti i dettagli dell'eccezione. Se l'interfaccia IDebugStackFrame3 non è implementata o il InterceptStackException
metodo restituisce un errore, il debugger continua a elaborare normalmente l'eccezione.
Nota
Le eccezioni possono essere intercettate solo nel codice gestito, ovvero quando il programma sottoposto a debug è in esecuzione in fase di esecuzione .NET. Naturalmente, gli implementatori del linguaggio di terze parti possono implementare InterceptStackException
nei propri motori di debug, se lo scelgono.
Al termine dell'intercettazione, viene segnalato un oggetto IDebugInterceptExceptionCompleteEvent2 .