C Gestion des erreurs
C ne fournit pas de prise en charge directe de la gestion des erreurs, mais en tant que langage de programmation système, il vous permet d'accéder aux données sous-jacentes sous la forme de valeurs de retour. Lorsqu'une erreur se produit, la plupart des appels de fonctions C ou UNIX renvoient 1 ou NULL, et un code d'erreur est défini en même temps.errno, ce code d'erreur est une variable globale indiquant qu'une erreur s'est produite lors de l'appel de fonction. Vous pouvez trouver divers codes d'erreur dans le fichier d'en-tête errno.h.
Par conséquent, les programmeurs C peuvent vérifier la valeur de retour, puis décider quelle action appropriée entreprendre en fonction de celle-ci. Les développeurs doivent définir errno à 0 lors de l'initialisation du programme, ce qui est une bonne pratique de programmation. Une valeur de 0 indique qu'il n'y a pas d'erreur dans le programme.
errno, perror() et strerror()
Le langage C fournit les fonctionsperror()etstrerror()pour affichererrnomessages textuels associés.
- perror()La fonction affiche la chaîne que vous lui passez, suivie d'un deux-points, d'un espace et de la représentation textuelle de la valeur actuelle de errno.
- strerror()La fonction renvoie un pointeur, qui pointe vers la représentation textuelle de la valeur actuelle de errno.
Simulons une condition d'erreur en essayant d'ouvrir un fichier qui n'existe pas. Vous pouvez utiliser diverses façons d'afficher les messages d'erreur ; ici, nous utilisons des fonctions pour démontrer l'utilisation. De plus, une chose à noter est que vous devez utiliserstderrflux de fichiers pour afficher toutes les erreurs.
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
错误号: 2 通过 perror 输出错误: No such file or directory 打开文件错误: No such file or directory
Erreurs de division par zéro
Lors d'une division, si vous ne vérifiez pas si le diviseur est zéro, cela provoquera une erreur d'exécution.
Pour éviter que cette situation ne se produise, le code suivant vérifie si le diviseur est zéro avant d'effectuer l'opération de division :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
除数为 0 退出运行...
Statut de sortie du programme
En général, lorsqu'un programme exécute une opération avec succès et se termine normalement, il porte la valeur EXIT_SUCCESS. Ici, EXIT_SUCCESS est une macro définie comme 0.
S'il y a une condition d'erreur dans le programme, lorsque vous quittez le programme, il portera la valeur de statut EXIT_FAILURE, qui est définie comme -1. Ainsi, le programme ci-dessus peut être écrit comme :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
quotient 变量的值为 : 4autres extensions