Como lidar com erros na linguagem C

Como lidar com erros na linguagem C
C é uma linguagem forte para a programação que é frequentemente empregada na criação de software do sistema, dispositivos incorporados e sistemas operacionais. Lidar com erros em C, por outro lado, pode ser uma tarefa difícil para aqueles que não são programadores competentes. Na seção a seguir, vamos analisar algumas abordagens básicas para lidar com erros na programação C.

Como lidar com erros na linguagem C

Geralmente, existem dois tipos de erros que existem na programação C, que são os seguintes:

  • Erros de sintaxe
  • Erros de tempo de execução

O que são erros de sintaxe

Erros de sintaxe são causados ​​por sintaxe incorreta no código, e o compilador pode detectá -los facilmente durante o processo de compilação. Para evitar erros de sintaxe, é melhor entender as regras básicas de sintaxe da programação C.

Quais são os erros de tempo de execução

Erros de tempo de execução ocorrer quando o programa é executado e pode causar vários problemas, como vazamentos de memória, falhas de segmentação e uso incorreto de ponteiros.

Como lidar com erros

Para lidar com esses erros, precisamos entender a principal razão por trás da ocorrência desses tipos de erros para que possamos abordá -los de acordo.

Em C, pode -se utilizar rotinas de correção de erro integradas para gerenciar erros. C linguagem fornece várias funções internas que podem ajudar a identificar e corrigir erros. A seguir, a lista de funções de manuseio que você pode usar na programação C:

  • Usando a função perror ()
  • Usando a função sterror
  • Usando a função Exit ()
  • Usando a função Assert ()

1: Usando a função perror ()

perror () é uma função interna na programação C usada para imprimir uma mensagem de erro na saída de erro padrão (STDERR) com base no código de erro definido por uma chamada de função anterior que falhou. Se for uma string e não é nulo, está escrito antes de um texto de erro. Por exemplo, se você estiver trabalhando com arquivos e uma operação de arquivo falha, você pode usar perror () função para imprimir uma mensagem de erro na saída de erro padrão:

#incluir
#incluir
#incluir
int main ()
Arquivo *fp;
fp = fopen ("no_file.txt "," r ");
if (fp == null)
printf ("Número de um erro: %d \ n", errno);
Perror ("O erro é:");

O acima c define a função principal () que tenta abrir um arquivo inexistente no modo de leitura usando fopen () função. FOPEN () fornece nulo e cria o valor global de errno porque o arquivo está faltando. O programa então imprime o número de erro usando o errno e uma mensagem de erro usando perror ().

Saída

2: Usando a função strerror ()

O strerror () A função é uma função interna para o manuseio de erros que é usado para recuperar uma mensagem de erro legível por humanos para um determinado código de erro. A variável Global Errno é normalmente usada como a entrada do código de erro para o strerror () função. Quando ocorre um erro durante a execução de um programa, o código de erro geralmente é definido como um valor específico pelo sistema ou função da biblioteca que detectou o erro. Este código de erro pode ser usado para procurar a mensagem de erro correspondente usando o strerror () função.

O strerror () A função fornece uma string de terminação nula que contém uma mensagem de aviso para o código de erro especificado. Esta mensagem de erro pode ser impressa no console ou exibida ao usuário para fornecer informações sobre a causa do erro.

#incluir
#incluir
#incluir
int main ()
Arquivo *fp = fopen ("no_file.txt "," v ");
if (fp == null)
printf ("Erro ocorre em um arquivo de abertura: %s \ n", strerror (errno));

O código acima define a função principal () que tenta abrir um arquivo inexistente no modo "V" usando fopen () função. O FOPEN () produz nulo e atualiza o indicador Global ErNO porque o arquivo que foi aberto não está presente. O programa então imprime a mensagem de erro usando strerror () função para converter o código de erro no errno em uma mensagem de erro legível por humanos.

Saída

3: Usando a função Exit ()

O saída() A função é outra maneira útil de ser usada para lidar com erros que encerra o programa imediatamente com um status de saída especificado. Quando o programa não pode continuar devido a um erro fatal ou uma situação excepcional, ele termina.

O método Exit () aceita uma entrada inteira que representa o estado de saída do programa. Um valor zero indica uma terminação aceitável, mas valores diferentes de zero indicam um erro ou terminação aberrante.

#incluir
#incluir
int main ()
Arquivo *arquivo = fopen ("no_file.txt "," z ");
se (!arquivo)
printf ("Erro: não foi possível abrir o arquivo \ n");
saída (1);

O programa acima abre um arquivo nomeado "nenhum arquivo.TXT" no modo 'z'. Se o arquivo não for encontrado, ele imprimirá uma mensagem de erro e encerrará o programa usando o saída() Funcionar com um código de status de 1.

Saída

4: Usando a função Assert ()

O afirmar() A função é uma ferramenta de depuração útil para manuseio de erros durante o desenvolvimento do programa. Ele permite que os desenvolvedores capturem e lidem com erros lógicos ou de programação que podem levar a comportamentos indefinidos ou falhas de programa.

Ao usar o afirmar() função, uma expressão lógica é passada como um argumento. Nada acontece se a declaração é avaliada como verdadeira, e o programa prossegue normalmente. No entanto, se a expressão avaliar como falsa, o afirmar() A função imprime uma mensagem de erro no console e encerra o programa imediatamente.

#incluir
#incluir
int main ()
int a = 5;
assert (a == 10);
printf ("a é %d \ n", a);
retornar 0;

No código acima, a função assert é usada para verificar se o valor de a é igual a 10. Se A não for igual a 10, o programa interromperá e exibirá uma mensagem de erro. Se A for igual a 10, o programa continuará sendo executado normalmente e imprimirá o valor de x.

Saída

Conclusão

C fornece várias funções para o tratamento de erros que os programadores podem usar para melhorar a confiabilidade e a robustez de seus programas. Essas funções incluem perror (), strerror (), saída () e afirmar(). Ao usar essas funções, é importante seguir as melhores práticas para o tratamento de erros, como verificar valores de retorno das funções e lidar com erros de uma maneira que não compromete a segurança ou a estabilidade do programa.