Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

C - Manejo de errores

Como tal, la programación en C no brinda soporte directo para el manejo de errores, pero al ser un lenguaje de programación del sistema, le brinda acceso a un nivel inferior en forma de valores de retorno. La mayoría de las llamadas a funciones de C o incluso Unix devuelven -1 o NULL en caso de cualquier error y establecen un código de error errno . Se establece como una variable global e indica que ocurrió un error durante cualquier llamada de función. Puede encontrar varios códigos de error definidos en el archivo de encabezado .

Entonces, un programador de C puede verificar los valores devueltos y puede tomar las medidas apropiadas según el valor devuelto. Es una buena práctica establecer errno en 0 al momento de inicializar un programa. Un valor de 0 indica que no hay ningún error en el programa.

errno, perror(). y estrerror()

El lenguaje de programación C proporciona perror() y strerror() funciones que se pueden utilizar para mostrar el mensaje de texto asociado con errno .

Intentemos simular una condición de error e intentemos abrir un archivo que no existe. Aquí estoy usando ambas funciones para mostrar el uso, pero puede usar una o más formas de imprimir sus errores. El segundo punto importante a tener en cuenta es que debe usar stderr secuencia de archivos para mostrar 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, "Value of errno: %d\n", errno);
      perror("Error printed by perror");
      fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
   } else {
   
      fclose (pf);
   }
   
   return 0;
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Value of errno: 2
Error printed by perror: No such file or directory
Error opening file: No such file or directory

Dividir por cero errores

Es un problema común que al momento de dividir cualquier número, los programadores no verifican si un divisor es cero y finalmente genera un error de tiempo de ejecución.

El siguiente código soluciona esto comprobando si el divisor es cero antes de dividir −

Demostración en vivo
#include <stdio.h>
#include <stdlib.h>

main() {

   int dividend = 20;
   int divisor = 0;
   int quotient;
 
   if( divisor == 0){
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(-1);
   }
   
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(0);
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Division by zero! Exiting...

Estado de salida del programa

Es una práctica común salir con un valor de EXIT_SUCCESS en caso de que el programa salga después de una operación exitosa. Aquí, EXIT_SUCCESS es una macro y se define como 0.

Si tiene una condición de error en su programa y está saliendo, debe salir con un estado EXIT_FAILURE que se define como -1. Así que escribamos el programa anterior de la siguiente manera −

Demostración en vivo
#include <stdio.h>
#include <stdlib.h>

main() {

   int dividend = 20;
   int divisor = 5;
   int quotient;
 
   if( divisor == 0) {
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(EXIT_FAILURE);
   }
	
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(EXIT_SUCCESS);
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Value of quotient : 4

Lenguaje C

  1. Manejo de archivos C
  2. Manejo de excepciones de Java
  3. Comprender la tasa de error del código ADC
  4. Almacenamiento y manipulación de cinturones
  5. Manejo de archivos en C#:Operaciones de E/S [Ejemplos]
  6. 4 tipos de equipos de manipulación de materiales
  7. Manejo de señales C++
  8. C# - Manejo de excepciones
  9. Python - Manejo de excepciones
  10. Conceptos básicos de seguridad en el manejo de materiales
  11. ¿Qué es el manejo de materiales?