Como usar instruções Try Catch em C

Como Usar Instrucoes Try Catch Em C



As palavras “try” e “catch” descrevem o que fazer quando um programa encontra uma exceção devido a um problema de código ou dados. As exceções são tratadas em um tentar bloco de código. Os blocos catch são utilizados para localizar e manipular exceções dos blocos try. Muitas linguagens de programação, incluindo Python, C++ e JavaScript, incluem tentativa de captura declarações.

Este artigo demonstra o que é uma instrução try-catch e como ela é implementada usando um exemplo em programação C.

O que é uma instrução Try Catch?

O tentar A instrução define uma coleção de instruções que podem criar uma exceção. Quando um tipo específico de exceção acontece, o bloco catch é para onde a exceção é enviada. O compilador emitirá um aviso de erro ou a exceção continuará a percorrer a pilha de chamadas até que seja endereçada se o bloco try/catch falhar em tratá-la.







A sintaxe geral do tentativa de captura declaração é dada como:



tentar {
/*
Insira algum código que provavelmente irá gerar erros
*/
}
pegar {
/*
Escreva um código para tratamento dos erros gerados.
*/
}

O que é uma instrução try-catch em C?

C não suporta manipulação de exceção e não tem um mecanismo embutido para fazer isso. No entanto, você pode simular isso até certo ponto usando setjmp e longjmp chamadas. Sem uma maneira de liberar memória uma vez que a pilha foi visitada, os mecanismos de tratamento de exceção são ineficientes e inseguros, e C não possui um coletor de lixo. Para liberar RAM, provavelmente também precisaríamos integrar gerenciadores de contexto.



Agora, à medida que fizermos melhorias no código, construiremos gradualmente uma solução. Longjmp e setjmp são duas funções C que podem ser fornecidas pelo arquivo de cabeçalho setjmp.h que serão utilizadas por nós. A função setjmp aceita variáveis ​​do tipo jmp_buf e retorna 0 quando é chamada diretamente. Quando a mesma variável jmp_buf é usada para invocar longjmp com duas variáveis, a função setjmp retorna um valor que corresponde ao valor do segundo argumento de longjmp.





Um exemplo da implementação acima é dado como:

#include
#include
#define TRY do { jmp_buf buf_state; if (!setjmp(buf_state)) {
#define CATCH } else {
#define ENDTRY }} while(0)
#define THROW longjmp(buf_state, 1)
int principal ( )
{
TENTAR {
printf ( 'Tente o teste de declaração \n ' ) ;
LANÇAR;
printf ( 'A instrução não deve aparecer, pois o bloco THROW já lançou a exceção \n ' ) ;
}
PEGAR {
printf ( 'Obteve exceção \n ' ) ;
}
ENDRY;
retornar 0 ;
}

No programa C acima, o ENDRY A função é usada para fornecer a parte de fechamento do bloco do-while.



Conclusão

Se um programa encontrar uma exceção devido a um erro de dados ou codificação durante a execução, “ tentar ' e ' pegar ” descreva como gerenciá-lo. Em um tentar bloco de código, exceções ocorrem enquanto um pegar bloco é onde os erros de tentar blocos são encontrados e manipulados. Muitas linguagens de programação suportam o tentativa de captura bloco, mas o C não. Este guia descreveu um método para usar instruções try-catch na programação C.