Comment gérer les erreurs dans le langage C

Comment gérer les erreurs dans le langage C
C est un langage fort pour la programmation qui est fréquemment utilisée dans la création de logiciels système, d'appareils intégrés, ainsi que des systèmes d'exploitation. Gestion des erreurs en C, en revanche, peut être une corvée difficile pour ceux qui ne sont pas des programmeurs compétents. Dans la section suivante, nous allons examiner certaines approches de base pour traiter les erreurs dans la programmation C.

Comment gérer les erreurs dans le langage C

Il existe généralement deux types d'erreurs qui existent dans la programmation C, qui sont les suivantes:

  • Erreurs de syntaxe
  • Erreurs d'exécution

Que sont les erreurs de syntaxe

Erreurs de syntaxe sont causés par une syntaxe incorrecte dans le code, et le compilateur peut facilement les détecter pendant le processus de compilation. Pour éviter les erreurs de syntaxe, il est préférable de comprendre les règles de syntaxe de base de la programmation C.

Quelles sont les erreurs de temps d'exécution

Erreurs d'exécution se produire lorsque le programme est exécuté et peut provoquer divers problèmes tels que les fuites de mémoire, les défauts de segmentation et l'utilisation incorrecte des pointeurs.

Comment gérer les erreurs

Pour gérer ces erreurs, nous devons comprendre la raison principale de la survenue de ces types d'erreurs afin que nous puissions ensuite les résoudre en conséquence.

En C, on peut utiliser des routines de correction d'erreur intégrées pour gérer les erreurs. Le langage C fournit plusieurs fonctions intégrées qui peuvent aider à identifier et à corriger les erreurs. Ce qui suit est la liste des fonctions de traitement que vous pouvez utiliser dans la programmation C:

  • Utilisation de la fonction perror ()
  • Utilisation de la fonction Sterror
  • Utilisation de la fonction exit ()
  • Utilisation de la fonction assert ()

1: Utilisation de la fonction perror ()

Perror () est une fonction intégrée dans la programmation C qui est utilisée pour imprimer un message d'erreur sur la sortie d'erreur standard (STDERR) en fonction du code d'erreur défini par un appel de fonction précédent qui a échoué. S'il s'agit d'une chaîne et n'est pas nul, il est écrit avant un texte d'erreur. Par exemple, si vous travaillez avec des fichiers et qu'une opération de fichier échoue, vous pouvez utiliser Perror () Fonction pour imprimer un message d'erreur sur la sortie d'erreur standard:

#inclure
#inclure
#inclure
int main()
Fichier * fp;
fp = fopen ("no_file.txt "," r ");
if (fp == null)
printf ("Nombre d'une erreur:% d \ n", errno);
Perror ("L'erreur est:");

Le C ci-dessus définit la fonction principale () qui tente d'ouvrir un fichier inexistant en mode de lecture en utilisant fopen () fonction. fopen () donne null et crée la valeur d'errno globale car le fichier est manquant. Le programme imprime ensuite le numéro d'erreur à l'aide d'errno et un message d'erreur à l'aide Perror ().

Sortir

2: Utilisation de la fonction Strorror ()

Le STRERROR () La fonction est une fonction intégrée pour la gestion des erreurs qui est utilisée pour récupérer un message d'erreur lisible par l'homme pour un code d'erreur donné. La variable globale Errno est généralement utilisée comme entrée de code d'erreur dans le STRERROR () fonction. Lorsqu'une erreur se produit lors de l'exécution d'un programme, le code d'erreur est généralement défini sur une valeur spécifique par le système ou la fonction de bibliothèque qui a détecté l'erreur. Ce code d'erreur peut ensuite être utilisé pour rechercher le message d'erreur correspondant à l'aide du STRERROR () fonction.

Le STRERROR () La fonction offre une chaîne à terminaison nulle qui contient un message d'avertissement pour le code d'erreur spécifié. Ce message d'erreur peut être imprimé sur la console ou affiché à l'utilisateur pour fournir des informations sur la cause de l'erreur.

#inclure
#inclure
#inclure
int main()
Fichier * fp = fopen ("no_file.txt "," v ");
if (fp == null)
printf ("L'erreur se produit dans un fichier d'ouverture:% s \ n", Stronterror (errno));

Le code ci-dessus définit la fonction principale () qui tente d'ouvrir un fichier inexistant en mode «V» en utilisant fopen () fonction. FOPEN () sort null et met à jour l'indicateur global errno car le fichier qui a été ouvert n'est pas présent. Le programme imprime ensuite le message d'erreur en utilisant STRERROR () fonction pour convertir le code d'erreur dans l'errno en un message d'erreur lisible par l'homme.

Sortir

3: Utilisation de la fonction exit ()

Le sortie() La fonction est un autre moyen utile d'être utilisé pour la gestion des erreurs qui met immédiatement le programme avec un statut de sortie spécifié. Lorsque le programme ne peut pas se poursuivre en raison d'une erreur mortelle ou d'une situation exceptionnelle, elle le termine.

La méthode exit () accepte une entrée entière qui représente l'état de sortie du programme. Une valeur de zéro indique une résiliation acceptable, mais les valeurs non nulles indiquent une erreur ou une terminaison aberrante.

#inclure
#inclure
int main()
Fichier * fichier = fopen ("no_file.txt "," z ");
si (!déposer)
printf ("Erreur: ne peut pas ouvrir le fichier \ n");
sortie (1);

Le programme ci-dessus ouvre un fichier nommé "pas de fichier.SMS" en mode «z». Si le fichier n'est pas trouvé, il imprimera un message d'erreur et terminera le programme à l'aide du sortie() Fonction avec un code d'état de 1.

Sortir

4: Utilisation de la fonction assert ()

Le affirmer() La fonction est un outil de débogage utile pour la gestion des erreurs pendant le développement du programme. Il permet aux développeurs d'attraper et de gérer des erreurs logiques ou de programmation qui pourraient conduire à un comportement non défini ou à des plantages de programme.

Lorsque vous utilisez le affirmer() fonction, une expression logique est transmise comme un argument. Rien ne se passe si la déclaration évalue TRUE et que le programme se déroule comme normal. Cependant, si l'expression évalue à False, le affirmer() La fonction imprime un message d'erreur à la console et termine immédiatement le programme.

#inclure
#inclure
int main()
int a = 5;
affirmer (a == 10);
printf ("a est% d \ n", a);
retour 0;

Dans le code ci-dessus, la fonction Assert est utilisée pour vérifier si la valeur de A est égale à 10. Si A n'est pas égal à 10, le programme s'arrête et affichera un message d'erreur. Si A est égal à 10, le programme continuera de fonctionner normalement et imprimera la valeur de x.

Sortir

Conclusion

C fournit plusieurs fonctions pour la gestion des erreurs que les programmeurs peuvent utiliser pour améliorer la fiabilité et la robustesse de leurs programmes. Ces fonctions incluent Perror (), Strerror (), Exit () et affirmer(). Lorsque vous utilisez ces fonctions, il est important de suivre les meilleures pratiques de gestion des erreurs, comme la vérification des valeurs de retour des fonctions et les erreurs de traitement d'une manière qui ne compromet pas la sécurité ou la stabilité du programme.