Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

C - Traitement des erreurs

En tant que telle, la programmation C ne fournit pas de support direct pour la gestion des erreurs, mais étant un langage de programmation système, elle vous permet d'accéder à un niveau inférieur sous la forme de valeurs de retour. La plupart des appels de fonction C ou même Unix renvoient -1 ou NULL en cas d'erreur et définissent un code d'erreur errno . Il est défini comme une variable globale et indique qu'une erreur s'est produite lors de tout appel de fonction. Vous pouvez trouver divers codes d'erreur définis dans le fichier d'en-tête .

Ainsi, un programmeur C peut vérifier les valeurs renvoyées et peut prendre les mesures appropriées en fonction de la valeur de retour. C'est une bonne pratique de mettre errno à 0 au moment de l'initialisation d'un programme. Une valeur de 0 indique qu'il n'y a pas d'erreur dans le programme.

errnon, erreur(). et strerreur()

Le langage de programmation C fournit perror() et strerreur() fonctions permettant d'afficher le message texte associé à errno .

Essayons de simuler une condition d'erreur et essayons d'ouvrir un fichier qui n'existe pas. Ici, j'utilise les deux fonctions pour montrer l'utilisation, mais vous pouvez utiliser une ou plusieurs façons d'imprimer vos erreurs. Le deuxième point important à noter est que vous devez utiliser stderr flux de fichiers pour afficher toutes les erreurs.

#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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

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

Diviser par zéro erreur

C'est un problème courant qu'au moment de diviser un nombre, les programmeurs ne vérifient pas si un diviseur est zéro et finalement cela crée une erreur d'exécution.

Le code ci-dessous corrige cela en vérifiant si le diviseur est égal à zéro avant de diviser −

Démo en direct
#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);
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

Division by zero! Exiting...

État de sortie du programme

Il est courant de quitter avec une valeur de EXIT_SUCCESS en cas de programme sortant après une opération réussie. Ici, EXIT_SUCCESS est une macro et elle est définie comme 0.

Si vous avez une condition d'erreur dans votre programme et que vous sortez, vous devez quitter avec un statut EXIT_FAILURE qui est défini comme -1. Écrivons donc le programme ci-dessus comme suit −

Démo en direct
#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);
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

Value of quotient : 4

Langue C

  1. Gestion des fichiers C
  2. Gestion des exceptions Java
  3. Comprendre le taux d'erreur de code ADC
  4. Stockage et manipulation de la courroie
  5. Gestion des signaux C++
  6. C# - Gestion des exceptions
  7. Python - Gestion des exceptions
  8. Principes de base de la sécurité de la manutention
  9. Qu'est-ce que la manutention ?