Compartilhar via


Tratamento de exceções (SDK do Visual Studio)

A seguir, descreve o processo que ocorre quando exceções são lançadas.

Processo de tratamento de exceções

  1. Quando uma exceção é lançada pela primeira vez, mas antes de ser tratada pelo manipulador de exceção no programa que está sendo depurado, o DE (mecanismo de depuração) envia um IDebugExceptionEvent2 para o SDM (gerenciador de depuração de sessão) como um evento de parada. Ele IDebugExceptionEvent2 será enviado se apenas as configurações da exceção (especificadas na caixa de diálogo Exceções no pacote de depuração) especificarem que o usuário deseja parar em notificações de exceção de primeira chance.

  2. O SDM chama IDebugExceptionEvent2::GetException para obter a propriedade de exceção.

  3. O pacote de depuração chama IDebugExceptionEvent2::CanPassToDebuggee para determinar quais opções apresentar ao usuário.

  4. O pacote de depuração pergunta ao usuário como lidar com a exceção abrindo uma caixa de diálogo de exceção de primeira chance.

  5. Se o usuário optar por continuar, o SDM chamará IDebugExceptionEvent2::CanPassToDebuggee.

  6. Se o programa que está sendo depurado não tiver um manipulador para uma exceção de segunda chance, o DE enviará um IDebugExceptionEvent2 para o SDM como EVENT_SYNC_STOP.

  7. O pacote de depuração pergunta ao usuário como lidar com a exceção ao abrir uma caixa de diálogo de exceção de primeira chance.

  8. O pacote de depuração chama IDebugExceptionEvent2::CanPassToDebuggee para determinar quais opções apresentar ao usuário.

  9. O pacote debug solicita ao usuário que defina como lidar com a exceção, abrindo uma caixa de diálogo de exceção de segunda chance.

  10. Se o método retornar S_OK, chamará IDebugExceptionEvent2::PassToDebuggee.