Compartilhar via


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

A seguir descreve-se 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 manipulada pelo manipulador de exceção no programa que está sendo depurado, o mecanismo de depuração (DE) envia um IDebugExceptionEvent2 para o gerenciador de depuração de sessão (SDM) como um evento de parada. O IDebugExceptionEvent2 é 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 nas notificações de exceção de primeira chance.

  2. O SDM chama IDebugExceptionEvent2::GetException para obter a propriedade de exception.

  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.

    • Se o método retornar S_OK, chame IDebugExceptionEvent2::P assToDebuggee.

      -ou-

      Se o método retornar S_FALSE, o programa que está sendo depurado terá uma segunda chance de manipular a exceção.

  6. Se o programa que está sendo depurado não tiver 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 abrindo 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 de depuração pergunta ao usuário 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, chame IDebugExceptionEvent2::PassToDebuggee.