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:
-
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 o SEH somente em programas C não 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
Práticas recomendadas do C++ modernas para tratamento de erros e exceções
Como fazer a interface entre código excepcional e não excepcional
Confira também
Referência de linguagem C++
Tratamento de exceção x64
Tratamento de exceções (C++/CLI e C++/CX)