Condividi tramite


IDebugStackFrame3:: InterceptCurrentException

Chiamato dal debugger nello stack frame corrente quando si desidera rilevare l'eccezione corrente.

HRESULT InterceptCurrentException(
   INTERCEPT_EXCEPTION_ACTION dwFlags,
   UINT64*                    pqwCookie
);
int InterceptCurrentException(
   uint dwFlags, 
   out  ulong pqwCookie
);

Parametri

  • dwFlags
    [in] Specifica le azioni da eseguire. Attualmente, solo INTERCEPT_EXCEPTION_ACTION il valore IEA_INTERCEPT è supportato e deve essere specificato.

  • pqwCookie
    [out] Valore univoco che identifica un'eccezione specifica.

Valore restituito

Se l'operazione riesce, restituisce S_OK, in caso contrario, restituisce un codice di errore.

Di seguito sono la maggior parte dei risultati di errore comune.

delle modifiche a..."

Descrizione

E_EXCEPTION_CANNOT_BE_INTERCEPTED

L'eccezione corrente non può essere rilevata.

E_EXCEPTION_CANNOT_UNWIND_ABOVE_CALLBACK

Il frame corrente di esecuzione non è stato trovato un gestore di nuovo.

E_INTERCEPT_CURRENT_EXCEPTION_NOT_SUPPORTED

Questo metodo non è supportato per il frame.

Note

Quando viene generata un'eccezione, il controllo di notevoli miglioramenti del debugger dal runtime ai punti chiave durante il processo di gestione delle eccezioni. Durante questi punti principali, il debugger può richiedere lo stack frame corrente se il frame desidera rilevare l'eccezione. In questo modo, viene generata un'eccezione intercettata è essenzialmente un gestore di eccezioni immediatamente per uno stack frame, anche se lo stack frame non dispone di un gestore di eccezioni, ad esempio un blocco try/catch nel codice programma).

Quando il debugger desidera sapere se l'eccezione viene rilevata, chiama questo metodo per l'oggetto corrente dello stack frame. Questo metodo è responsabile della gestione dei dettagli dell'eccezione. Se IDebugStackFrame3 l'interfaccia non viene distribuita o il metodo di InterceptStackException restituisce qualsiasi errore, il debugger continua a elaborare l'eccezione generale.

Nota

Le eccezioni possono essere rilevate solo nel codice gestito, ovvero, quando il programma sottoposto a debug è in esecuzione nel runtime di .NET.Naturalmente, gli implementatori di terze parti di linguaggio possono implementare InterceptStackException nei propri motori di debug se quindi scegliere.

Dopo aver l'intercettazione viene completata, IDebugInterceptExceptionCompleteEvent2 viene segnalato.

Vedere anche

Riferimenti

IDebugStackFrame3

INTERCEPT_EXCEPTION_ACTION

IDebugInterceptExceptionCompleteEvent2