Latest web development tutorials

C Control de errores

lenguaje C no proporciona soporte directo para el control de errores, sino como un lenguaje de programación de sistemas, se devuelve el valor de la forma le permite acceder a los datos subyacentes. Cuando se produce un error, la mayor parte de la llamada a la función UNIX o C devuelve 1 o NULL, un código de error también establece lavariable errno, este código de error es una variable global, se expresa durante la llamada a la función de error ocurrido.Se puede encontrar una variedad de error de archivo de cabecera códigos <error.h>.

Por lo tanto, los programadores de C pueden devolver valores mediante la comprobación de lo que la acción apropiada y luego tomar decisiones basadas en el valor de retorno. Los desarrolladores deben al inicio del programa, el errno fijado a 0, que es una buena práctica de programación. Un valor de 0 indica que el programa no hay errores.

se pone en errno, perror () y strerror ()

lenguaje C proporciona la función destrerror () para mostrar un mensaje de texto asociado con el errnoperror ()y.

  • perror función ()para mostrar su pase de su cadena, seguido de dos puntos, un espacio y la representación de texto del valor de la variable errno actual.
  • strerror () devuelve un puntero al valor actual de representación de texto errno.

Vamos a simular un falso caso, el intento de abrir un archivo que no existe. Se pueden utilizar diferentes maneras de mostrar un mensaje de error, aquí usamos la función para demostrar el uso. Otra cosa a tener en cuenta, se debe utilizar la secuencia de archivo de salidastderr de todos los errores.

#include <stdio.h>
#include <errno.h>
#include <string.h>

extern int errno ;

int main ()
{
   FILE * pf;
   int errnum;
   pf = fopen ("unexist.txt", "rb");
   if (pf == NULL)
   {
      errnum = errno;
      fprintf(stderr, "错误号: %d\n", errno);
      perror("通过 perror 输出错误");
      fprintf(stderr, "打开文件错误: %s\n", strerror( errnum ));
   }
   else
   {
      fclose (pf);
   }
   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

错误号: 2
通过 perror 输出错误: No such file or directory
打开文件错误: No such file or directory

La división por cero error

Durante la división, el divisor es cero si no se controla, dará lugar a un error de ejecución.

Para evitar que esto suceda, el siguiente código antes de hacer la división comprueba en primer lugar el divisor es cero:

#include <stdio.h>
#include <stdlib.h>

main()
{
   int dividend = 20;
   int divisor = 0;
   int quotient;
 
   if( divisor == 0){
      fprintf(stderr, "除数为 0 退出运行...\n");
      exit(-1);
   }
   quotient = dividend / divisor;
   fprintf(stderr, "quotient 变量的值为 : %d\n", quotient );

   exit(0);
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

除数为 0 退出运行...

el código de salida del programa

En circunstancias normales, la implementación exitosa del programa después de un tiempo de funcionamiento normal va a salir con un valor EXIT_SUCCESS. Aquí, macro EXIT_SUCCESS, que se define como 0.

Si hay un error en el programa, al salir del programa, va a llevar a EXIT_FAILURE valor de estado, que se define como -1. Por lo tanto, el procedimiento anterior se puede escribir como:

#include <stdio.h>
#include <stdlib.h>

main()
{
   int dividend = 20;
   int divisor = 5;
   int quotient;
 
   if( divisor == 0){
      fprintf(stderr, "除数为 0 退出运行...\n");
      exit(EXIT_FAILURE);
   }
   quotient = dividend / divisor;
   fprintf(stderr, "quotient 变量的值为: %d\n", quotient );

   exit(EXIT_SUCCESS);
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

quotient 变量的值为 : 4