C++ nos fornece uma classe de tratamento de exceções padrão , que é usada para lançar exceções quando funções da biblioteca padrão C++ são executadas. A estrutura hierárquica das classes de exceção padrão fornecidas pelo C++ é a seguinte:
Pode-se ver que todas as classes de exceção herdam da classe base de exceção Logic_error e runtime_error na classe de exceção são duas categorias relativamente grandes, incluindo várias autoclasses. Elas são divididas em tabelas para representar erros lógicos e erros de tempo de execução .
Dê exemplos, como:
1. Quando usamos new para abrir memória, se não houver espaço suficiente, uma exceção bad_alloc será lançada.
2. Quando usamos dynamic_cast() para realizar a conversão de tipo dinâmico e falhamos, uma exceção bad_typeid será lançada.
3. Quando o valor calculado excede o intervalo máximo representado pelo tipo, uma exceção overflow_error é lançada, indicando um estouro de operação. Da mesma forma, underflow_error indica um estouro negativo de operação.
4. Quando usamos o subscrito da classe string, mas ele sai dos limites, uma exceção out_of_range é lançada.
Espere... espere... descubra mais por conta própria.
Deve-se notar que ao usar a classe de exceção padrão que vem com C++, você precisa incluir o arquivo de cabeçalho correspondente, porque as classes exceção e bad_exception são definidas na exceção do arquivo de cabeçalho, a classe bad_alloc é definida no arquivo de cabeçalho novo, e a classe bad_typeid é definida no arquivo de cabeçalho typeinfo , a classe ios_base::failure é definida no arquivo de cabeçalho ios e outras classes de exceção são definidas em stdexcept.
Abaixo, mostrarei como usar a classe de exceção padrão C++ :
#include<iostream>#include<new>#include<stdexcept>usingnamespacestd;//Tratamento de exceções intmain(){string*s;try{s=newstring(www.dotcpp.com);cout<<s->substr( 15,5);}catch(bad_alloc&t){cout<<Exceptionoccurred:<<t.what()<<endl;}catch(out_of_range&t){cout<<Exceptionoccurred:<<t.what()<<endl;} retornar0;}
Os resultados da execução são os seguintes:
Experimente você mesmo e aprenda como usá-lo!