Tratamento de exceções em MSVC

Uma exceção é uma condição de erro, possivelmente fora do controle do programa, que impede que o programa continue sua execução normal. Determinadas operações, incluindo a criação do objetos, a entrada/saída de arquivos e as chamadas de função feitas de outros módulos, são todas possíveis fontes de exceções até mesmo quando seu programa é executado corretamente. O código robusto antecipar e trata exceções. Para detectar erros lógicos, use asserções em vez de exceções (consulte Usando asserções).

Tipos de exceções

O MSVC (compilador do Microsoft C++) dá suporte a três tipos de tratamento de exceção:

  • Tratamento de exceções C++

    Para a maioria dos programas C++, você deve usar o tratamento de exceção C++. É seguro para o tipo e garante que os destruidores de objetos sejam invocados durante o desenrolamento da pilha.

  • Tratamento estruturado de exceções

    O Windows fornece seu próprio mecanismo de exceção, chamado SEH (tratamento de exceção estruturada). Ele não é recomendável para a programação em C++ ou MFC. Use SEH somente em programas C não-MFC.

  • Exceções MFC

    Desde a versão 3.0, o MFC tem usado exceções C++. Ele ainda dá suporte a macros de tratamento de exceções antigas, que têm formato semelhante ao das exceções do C++. Para obter orientações sobre a combinação de macros do MFC e exceções do C++, consulte Exceções: usando macros MFC e exceções do C++.

Use uma opção de compilador /EH para especificar o modelo de manipulação de exceção a ser usado em um projeto C++. O tratamento padrão de exceção C++ (/EHsc) é o padrão em novos projetos C++ no Visual Studio.

Não recomendamos que você misture os mecanismos de tratamento de exceção. Por exemplo, não use exceções C++ com tratamento de exceção estruturado. Usar exclusivamente manipulação de exceções C++ torna seu código mais portável e permite que você manipule exceções de qualquer tipo. Para obter mais informações sobre as desvantagens da manipulação de exceções estruturada, consulte Manipulação de exceções estruturada.

Nesta seção

Confira também

Referência de linguagem C++
Tratamento de exceção x64
Tratamento de exceções (C++/CLI e C++/CX)