Freigeben über


Ausnahmebehandlung (Visual Studio SDK)

Im Folgenden wird der Prozess beschrieben, der auftritt, wenn Ausnahmen ausgelöst werden.

Ausnahmebehandlungsprozess

  1. Wenn eine Ausnahme zum ersten Mal ausgelöst wird, aber bevor sie vom Ausnahmehandler im zu debuggenden Programm behandelt wird, sendet das Debugmodul (DE) ein IDebugExceptionEvent2 als Stoppereignis an den Sitzungsdebug-Manager (SDM). Die IDebugExceptionEvent2 wird gesendet, wenn nur die Einstellungen für die Ausnahme (im Dialogfeld "Ausnahmen" im Debugpaket angegeben) angeben, dass der Benutzer bei Erstchance-Ausnahmemeldungen anhalten möchte.

  2. Die SDM ruft IDebugExceptionEvent2::GetException auf, um die Eigenschaft der Ausnahme abzurufen.

  3. Das Debugpaket ruft IDebugExceptionEvent2::CanPassToDebuggee auf, um zu bestimmen, welche Optionen dem Benutzer präsentiert werden sollen.

  4. Das Debugpaket fragt den Benutzer, wie die Ausnahme behandelt werden soll, indem es ein Erstausnahme-Dialogfeld öffnet.

  5. Wenn der Benutzer den Vorgang fortsetzen möchte, ruft die SDM IDebugExceptionEvent2::CanPassToDebuggee auf.

    • Wenn die Methode S_OK zurückgibt, ruft sie IDebugExceptionEvent2::PassToDebuggee auf.

      -oder-

      Wenn die Methode S_FALSE zurückgibt, erhält das zu debuggende Programm eine zweite Chance, die Ausnahme zu behandeln.

  6. Wenn das zu debuggende Programm keinen Handler für eine Zweitchancen-Ausnahme aufweist, sendet die DE ein IDebugExceptionEvent2 als EVENT_SYNC_STOP an das SDM.

  7. Das Debugpaket fragt den Benutzer, wie die Ausnahme behandelt werden soll, indem es ein First-Chance-Ausnahmedialogfeld öffnet.

  8. Das Debugpaket ruft IDebugExceptionEvent2::CanPassToDebuggee auf, um zu bestimmen, welche Optionen dem Benutzer präsentiert werden sollen.

  9. Das Debugpaket fordert den Benutzer auf, wie die Ausnahme behandelt wird, indem er ein Dialogfeld mit zweiter Chance öffnet.

  10. Wenn die Methode S_OK zurückgibt, wird IDebugExceptionEvent2::PassToDebuggee aufgerufen.