Como jogar uma exceção C ++

Como jogar uma exceção C ++
Jogando uma exceção C ++ é uma técnica importante que ajuda a melhorar a estrutura geral e a estabilidade do código. Exceções de C ++ são objetos simples usados ​​para indicar uma condição de erro ocorreu além do escopo do que pode ser tratado pela execução normal.

Este artigo fornecerá um detalhe sobre como Jogue uma exceção C ++, com foco na biblioteca padrão biblioteca e o uso do básico tente/capturar blocos.

Como jogar uma exceção C ++

Antes que se possa começar a aprender a Jogue uma exceção C ++, É importante entender o que é uma exceção. Um objeto usado para significar um estado incorreto é a exceção. Os usuários de C ++ o usam quando algo inesperado ou além das capacidades do programa ocorre. Existem algumas maneiras diferentes de definir quando e como uma exceção deve ser jogada. Em geral, você pode usar quando está ocorrendo uma ação que pode ser considerada uma situação anormal. Uma coisa a lembrar é que quando um A exceção é lançada, nunca deve ser usado para indicar uma ação intencional pelo usuário.

Você pode transferir o controle entre partes de um programa usando exceções. Tentar, Pegar, e Lançar são as três palavras -chave base para Manipulação de exceção de C ++. Quando surgir um problema, um programa irá jogue uma exceção usando o lançar palavra -chave. Um manipulador de exceção é usado por um software para capturar uma exceção no local onde o problema deve ser manuseado. O termo pegar denota capturar uma exceção. A tentar O bloco especifica uma seção de código que acionará certas exceções. Um bloco de captura ou blocos é então adicionado depois dele.

Ao herdar e modificar a funcionalidade da classe de exceção, você pode criar suas próprias exceções. O exemplo a seguir demonstra como construir sua própria exceção usando o std :: Exception classe de maneira padrão.

#incluir
#incluir
usando namespace std;
estrutura myException: Exceção pública
const char * o que () const thow ()
retornar "A C ++ Exception";

;
int main ()
tentar
jogue myException ();
catch (myException & e)
std :: cout << "My exception caught" << std::endl;
std :: cout << e.what() << std::endl;
catch (std :: Exception & e)

No exemplo acima, o que() é um método público fornecido pela classe de exceção neste caso, e todas as aulas de exceção da criança o substituíram. Isso fornece a causa raiz da exceção.

Saída

Um exceção deve ser jogado Dentro de um construtor C ++ quando a construção de objetos falha, pois não há meios para se recuperar. Os construtores devem adicionalmente lançar exceções C ++ para indicar quaisquer parâmetros de entrada que estejam além do intervalo ou com valores que não são permitidos. Os códigos de retorno não podem ser usados ​​nos construtores C ++ porque eles não têm um tipo de retorno. Portanto, é recomendável que Construtores lançam exceções para indicar falha.

Para Jogue uma exceção C ++ e encerrar o código do construtor, use o lançar declaração.

#incluir
#incluir
usando namespace std;
int addpositivo (int x, int y)

se (x<0 || y<0)
lançar std :: invalid_argument ("argumentos devem ser positivos");
retornar (x + y);

int main ()

tentar
cout << AddPositiveInt(-1, 2);
Catch (std :: invalid_argument & e)
Cerr << e.what() << endl;
retornar -1;
retornar 0;

Neste exemplo de exceção de arremesso C ++, o Addpositivo () O método é usado no bloqueio de tentativa da função principal (). Uma exceção de argumento inválida é jogada pelo Addpositivo () função se algum dos dois parâmetros esperados, números inteiros x e y, são negativos. A biblioteca padrão O arquivo de cabeçalho contém a definição do std :: inválido Classe de argumento. Esta classe especifica os tipos de objetos que podem ser jogado como exceções e registros C ++ Problemas causados ​​pelos valores de parâmetros inválidos. O principal() Capt Block da função captura e lida com a exceção de argumento inválido.

Saída

Quando jogar uma exceção C ++

Sabendo quando jogue uma exceção é o primeiro passo, mas como você o implementa? A biblioteca padrão inclui uma variedade de classes sob o biblioteca, que geralmente são usadas para lançar exceções. Eles contêm algumas informações importantes para informar o usuário sobre qualquer tipo de erro que ocorra, como a mensagem de erro e o tipo de erro. Depois que os usuários identificam a classe apropriada, eles podem usar o “lançar”Palavra -chave para lançar a exceção.

Conclusão

Jogando uma exceção C ++ é um processo simples que lida com qualquer tipo de erro ocorreu no programa. É importante usar o biblioteca ao jogar exceções e usar o “tente/capturar”Bloqueie a estrutura para encontrá -los e lidar adequadamente. Você pode estar confiante de que seu código pode lidar com erros educadamente se você fizer isso.