Condividi tramite


IDebugStackFrame3::InterceptCurrentException

Chiamato dal debugger nel frame dello stack corrente quando vuole intercettare l'eccezione corrente.

Sintassi

int InterceptCurrentException(
   uint dwFlags,
   out  ulong pqwCookie
);

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 .

Vedi anche