Manipulação de exceção C ++

Manipulação de exceção C ++
Exceção é qualquer comportamento anormal ou erro de tempo de execução. Exceção são uma situação incomum em nosso programa, onde nosso programa deve estar pronto para lidar com isso com resposta apropriada.

Onde a exceção ocorre

Sempre que executamos qualquer software, esperamos que nosso software funcione corretamente em qualquer situação. Mas em alguns casos, alguns eventos ocorrem quando o fluxo normal de execução de nosso software é interrompido. Então, quando dizemos que nosso software deve ser robusto, significa que o software funciona corretamente em qualquer situação.

Manipulação de exceção

O manuseio de exceção de C ++ é usado para lidar com a condição de erro em um programa sistematicamente, tomando a ação necessária. Usando o manuseio de exceções, podemos gerenciar e responder facilmente para o erro de tempo de execução.

Tente, pegue, jogue

  1. Se ocorrer alguma situação excepcional em nosso programa, o conteremos em um bloco chamado tentar bloquear.
  2. Se ocorrer alguma exceção dentro do bloco de tentativa, ele deve ser jogado usando a palavra -chave lançar.
  3. Essa exceção é capturada pelo pegar bloquear. No bloco de captura, as ações necessárias são tomadas para lidar com a exceção.

Sintaxe

tentar

Catch (tipo 1 arg)

Catch (tipo 2 arg)

----------
Catch (typen arg)

Explicação
Em primeiro lugar, costumamos escrever a palavra -chave tentar. Depois de terminar o bloco de tentativa, temos que escrever pegar Bloqueie imediatamente. Podemos escrever vários blocos de captura em sequência. Mas onde tente o final do bloco, todos os blocos de captura precisam ser escritos imediatamente. Se não escrevermos o bloco de captura imediato após o bloco de tentativa, pode ocorrer um erro. Nós usamos lançar palavra -chave dentro do bloco de tentativa.

Exemplo de programação 1

# incluir
Usando namespace std;
int main ()

cout<< “ Exception Handling Program :” ;
tentar
jogar 30;
cout<< “ \n Try ” ;

Catch (int e)
cout<< “ \n Exception no : ” << e ;

cout<< “ \n Testing The Last Line ” ;

Saída

Explicação de programação
Neste exemplo de programação, estamos tentando mostrar como a exceção ocorre e como lidar com isso. Dentro da função principal depois de escrever uma declaração de saída que usamos tentar bloquear. Lançar A palavra -chave é usada dentro do bloco de tentativa. Após o arremesso de palavras -chave, usamos um número 30. Pode ser uma corda, ou um duplo ou um flutuador- qualquer constante que possamos usar. Então escrevemos uma declaração cout. Mas essa linha não pode ser executada após a execução de arremesso. Depois de terminar o bloco de tentativa, escrevemos o bloco de captura imediatamente. Dentro do bloco de captura, escrevemos a linha (int e). Com a ajuda da palavra -chave de arremesso qual valor jogamos, esse valor entrará dentro da variável E. Depois de terminar o bloco de captura, escrevemos uma declaração de saída “\ n testando a última linha”. Agora, a questão é quando essa linha será executada após a declaração de saída dentro do bloco de captura?

Regras de tentativa, captura e bloqueio

  1. Se escrevermos Block Try, temos que escrever um bloco de captura.
  2. Se escrevermos apenas o bloco de pegamos e não escrevermos nenhum bloco de tentativa e arremesso, o erro ocorrerá.
  3. Se escrevermos o bloco de arremesso e captura e não escrevermos nenhum bloco de tentativa, o erro ocorrerá.
  4. Se escrevermos apenas jogamos e não escrevamos nenhuma tentativa e captura o bloco, nenhum erro ocorrerá. Isso significa que podemos escrever arremesso sem escrever o bloco de tentativa.
  5. Se escrevermos múltiplos blocos de captura com diferentes tipos de argumentos em sequência, que o valor de arremesso corresponderá ao tipo de argumento de captura, ele aceitará. Então nenhum outro bloco de captura será executado. O exemplo de programação é dado abaixo.

Exemplo de programação 2

# incluir
Usando namespace std;
int main ()

cout<< “ Exception Handling Program :” ;
tentar
se (i == 1)
jogue 1;
if (i == 2)
jogue 2;
if (i == 3)
jogue 3;
cout<< “ \n Try ” ;

Catch (duplo e)
cout<< “ \n Exception no : ” << e ;

Catch (int e)
cout<< “ \n Exception no : ” << e ;

cout<< “ \n Testing The Last Line ” ;

Saída

f. Podemos escrever declarações de arremesso múltiplas em um único bloco de tentativa.

Exemplo de programação 3

# incluir
usando namespace std;
int main ()

int i = 3;
cout<< “ Exception Handling Program :” ;
tentar
se (i == 1)
jogue 1;
if (i == 2)
jogue 2;
if (i == 3)
jogue 3;
cout<< “ \n Try ” ;

Catch (int e)
cout<< “ \n Exception no : ” << e ;

cout<< “ \n Testing The Last Line ” ;

Saída

g. Podemos escrever uma declaração de arremesso dentro de um bloco de tentativa sem dar nenhum valor de arremesso.

Exemplo de programação 4

# incluir
usando namespace std;
int main ()

cout<< “ Exception Handling Program :” ;
int i = 3;
tentar
if (i == 3)
lançar ;
cout<< “ \n Try ” ;

Catch (int)
cout<< “ \n Exception no : ” ;

cout<< “ \n Testing The Last Line ” ;

Saída

Explicação

Aqui escrevemos a palavra -chave Throw sem dar nenhum valor, então o programa será encerrado porque o manuseio adequado de exceção não ocorre aqui. Como resultado, o bloco de captura não será executado. No tempo de compilação, não haverá erro. Mas, no tempo de execução, o programa será encerrado com uma mensagem "terminando chamado sem uma exceção ativa".

Conclusão

Discutindo em detalhes sobre o manuseio de exceções, aprendemos aqui que, se ocorrer alguma situação anormal em nosso programa, o programa terá que estar pronto para gerenciar essa situação anormal.