Cómo manejar los errores en el lenguaje C

Cómo manejar los errores en el lenguaje C
C es un lenguaje fuerte para la programación que se emplea con frecuencia en la creación de software del sistema, dispositivos integrados y sistemas operativos. El manejo de errores en C, por otro lado, puede ser una tarea difícil para aquellos que no son programadores competentes. En la siguiente sección, veremos algunos enfoques básicos para lidiar con errores en la programación C.

Cómo manejar los errores en el lenguaje C

Generalmente hay dos tipos de errores que existen en la programación C, que son los siguientes:

  • Errores de sintaxis
  • Errores de tiempo de ejecución

¿Qué son los errores de sintaxis?

Errores de sintaxis son causados ​​por una sintaxis incorrecta en el código, y el compilador puede detectarlos fácilmente durante el proceso de compilación. Para evitar errores de sintaxis, es mejor comprender las reglas de sintaxis básicas de la programación C.

¿Cuáles son los errores de tiempo de ejecución?

Errores de tiempo de ejecución ocurren cuando el programa se ejecuta y puede causar varios problemas como fugas de memoria, fallas de segmentación y uso incorrecto de punteros.

Cómo manejar los errores

Para manejar estos errores, necesitamos comprender la razón principal detrás de la ocurrencia de estos tipos de errores para que luego podamos abordarlos en consecuencia.

En C, se pueden utilizar rutinas integradas de corrección de errores para administrar errores. El lenguaje C proporciona varias funciones incorporadas que pueden ayudar a identificar y corregir errores. La siguiente es la lista de funciones de manejo que puede usar en la programación C:

  • Uso de la función Perror ()
  • Usando la función Sterror
  • Usando la función EXIT ()
  • Usando la función Afirmar ()

1: Uso de la función Perror ()

Perror () es una función incorporada en la programación C que se utiliza para imprimir un mensaje de error en la salida de error estándar (STDERR) basado en el código de error establecido por una llamada de función anterior que ha fallado. Si es una cadena y no es nula, se escribe antes de un texto de error. Por ejemplo, si está trabajando con archivos y una operación de archivo falla, puede usar Perror () función para imprimir un mensaje de error en la salida de error estándar:

#incluir
#incluir
#incluir
int main ()
Archivo *fp;
fp = fopen ("no_file.txt "," r ");
if (fp == null)
printf ("Número de un error: %d \ n", errno);
Perror ("El error es:");

La C anterior C define la función Main () que intenta abrir un archivo inexistente en modo de lectura utilizando fopen () función. fopen () da nulo y crea el valor de errno global porque falta el archivo. El programa luego imprime el número de error usando ERRNO y un mensaje de error usando Perror ().

Producción

2: usando la función strerror ()

El Strerror () La función es una función incorporada para el manejo de errores que se utiliza para recuperar un mensaje de error legible por humanos para un código de error dado. La variable global errno se usa típicamente como la entrada del código de error al Strerror () función. Cuando ocurre un error durante la ejecución de un programa, el código de error generalmente se establece en un valor específico por el sistema o la función de la biblioteca que detectó el error. Este código de error se puede usar para buscar el mensaje de error correspondiente utilizando el Strerror () función.

El Strerror () La función ofrece una cadena nula que contiene un mensaje de advertencia para el código de error especificado. Este mensaje de error se puede imprimir en la consola o mostrarse al usuario para proporcionar información sobre la causa del error.

#incluir
#incluir
#incluir
int main ()
Archivo *fp = fopen ("NO_FILE.txt "," v ");
if (fp == null)
printf ("El error ocurre en un archivo de apertura: %s \ n", strerror (errno));

El código anterior define la función Main () que intenta abrir un archivo inexistente en modo "V" usando fopen () función. Fopen () sale nulo y actualiza el indicador de errno global porque el archivo que se abrió no está presente. El programa luego imprime el mensaje de error usando Strerror () función para convertir el código de error en el error a un mensaje de error legible por humanos.

Producción

3: usando la función EXIT ()

El salida() La función es otra forma útil de usarse para el manejo de errores que termina el programa inmediatamente con un estado de salida especificado. Cuando el programa no puede continuar debido a un error fatal o una situación excepcional, lo termina.

El método Exit () acepta una entrada entera que representa el estado de salida del programa. Un valor de cero indica una terminación aceptable, pero los valores no cero indican un error o terminación aberrante.

#incluir
#incluir
int main ()
Archivo *file = fopen ("NO_FILE.txt "," z ");
si (!archivo)
printf ("Error: no se pudo abrir el archivo \ n");
salida (1);

El programa anterior abre un archivo llamado "ningún archivo.TXT" en modo 'z'. Si no se encuentra el archivo, imprimirá un mensaje de error y finalizará el programa utilizando el salida() Funcionar con un código de estado de 1.

Producción

4: Usando la función Afirmar ()

El afirmar() La función es una herramienta de depuración útil para el manejo de errores durante el desarrollo del programa. Permite a los desarrolladores atrapar y manejar errores lógicos o de programación que podrían conducir a un comportamiento indefinido o bloqueos del programa.

Al usar el afirmar() función, se pasa una expresión lógica como argumento. Nada sucede si la declaración se evalúa de verdad, y el programa continúa como normal. Sin embargo, si la expresión se evalúa en falso, el afirmar() La función imprime un mensaje de error en la consola y termina el programa inmediatamente.

#incluir
#incluir
int main ()
int a = 5;
afirmar (a == 10);
printf ("a es %d \ n", a);
regresar 0;

En el código anterior, la función de afirmar se usa para verificar si el valor de A es igual a 10. Si A no es igual a 10, el programa se detendrá y mostrará un mensaje de error. Si A es igual a 10, el programa continuará ejecutando normalmente e imprimirá el valor de x.

Producción

Conclusión

C proporciona varias funciones para el manejo de errores que los programadores pueden usar para mejorar la fiabilidad y la robustez de sus programas. Estas funciones incluyen Perror (), Strerror (), Exit () y afirmar(). Al usar estas funciones, es importante seguir las mejores prácticas para el manejo de errores, como verificar los valores de retorno de las funciones y el manejo de errores de una manera que no comprometa la seguridad o la estabilidad del programa.