Condividi tramite


Gestione delle eccezioni (Visual Studio SDK)

Di seguito viene descritto il processo che si verifica quando vengono generate eccezioni.

Processo di gestione delle eccezioni

  1. Quando viene generata per la prima volta un'eccezione, ma prima che venga gestita dal gestore eccezioni nel programma sottoposto a debug, il motore di debug (DE) invia un oggetto IDebugExceptionEvent2 al gestore di debug della sessione (SDM) come evento di arresto. L'oggetto IDebugExceptionEvent2 viene inviato se solo le impostazioni per l'eccezione (specificata nella finestra di dialogo Eccezioni nel pacchetto di debug) specificano che l'utente vuole interrompere le notifiche di eccezione first-chance.

  2. SDM chiama IDebugExceptionEvent2::GetException per ottenere la proprietà dell'eccezione.

  3. Il pacchetto di debug chiama IDebugExceptionEvent2::CanPassToDebuggee per determinare quali opzioni presentare all'utente.

  4. Il pacchetto di debug chiede all'utente come gestire l'eccezione aprendo una finestra di dialogo di eccezione first-chance.

  5. Se l'utente sceglie di continuare, SDM chiama IDebugExceptionEvent2::CanPassToDebuggee.

    • Se il metodo restituisce S_OK, chiama IDebugExceptionEvent2::P assToDebuggee.

      -o-

      Se il metodo restituisce S_FALedizione Standard, al programma sottoposto a debug viene data una seconda possibilità di gestire l'eccezione.

  6. Se il programma sottoposto a debug non ha alcun gestore per un'eccezione di seconda probabilità, de invia un oggetto IDebugExceptionEvent2 a SDM come EVENT_SYNC_STOP.

  7. Il pacchetto di debug chiede all'utente come gestire l'eccezione aprendo una finestra di dialogo di eccezione first-chance.

  8. Il pacchetto di debug chiama IDebugExceptionEvent2::CanPassToDebuggee per determinare quali opzioni presentare all'utente.

  9. Il pacchetto di debug chiede all'utente come gestire l'eccezione aprendo una finestra di dialogo di eccezione di seconda probabilità.

  10. Se il metodo restituisce S_OK, chiama IDebugExceptionEvent2::PassToDebuggee.