Une chose importante (voire obligatoire) pour écrire des programmes lisibles, maintenables et fonctionnels en C, est de gérer correctement ses erreurs. Cela est fondamental pour deux raisons :
- Durant le développement, il est bien plus aisé de comprendre ce qui ne fonctionne pas avec une bonne gestion d'erreurs. Les problèmes sont identifiés plus vite.
- Après le développement l'utilisateur doit comprendre ce qui se passe en cas de soucis. Il doit notamment être capable de différencier les problèmes qu'il peut résoudre lui-même (mauvaise utilisation) des problèmes qu'il ne peut que reporter (bugs) (...)
[...] } end: close(fd); } Cette solution à l'avantage d'être performante. Cependant, le principe des "goto" répugne certains programmeurs et n'est vraiment pas du goût de tous. A vous de voir si cette solution peut convenir. La seconde possibilité est d'appeler une fonction qui gérera le cas d'erreur (ou de fin) : static void f_end(int fd) { close(fd); } void { char buf[1024]; int fd; fd = open("/tmp/file", O_RDONLY); if (fd [...]
[...] } } Vous remarquerez que le "bon" code est nettement plus lisible. Les erreurs sont gérées dans des et la continuité de la fonction correspond au fonctionnement normal. Il arrive parfois de voir pire que notre mauvais code ! Au lieu de gérer "à l'envers" les erreurs, certains mélangent les deux, exemple : void { int fd; fd = open("/tmp/file", O_RDONLY); if (fd { char buf[1024]; if (read(fd, buf, sizeof(buf)) [...]
[...] Exemple : #include #include int main(void) { struct stat if (lstat("un fichier qui n'existe pas", [...]
[...] Mauvais code : void my_listen(int sockfd, int backlog) { listen(sockfd, backlog); } Bon code : void my_listen(int sockfd, int backlog) { int res; res = listen(sockfd, backlog); if (res [...]
[...] La gestion des erreurs en langage C Introduction I - Ecrire du beau code II - Les "goto" ou fonctions d'erreur III - Les appels système IV errno V - Les exceptions Introduction. Une chose importante (voire obligatoire) pour écrire des programmes lisibles, maintenables et fonctionnels en est de gérer correctement ses erreurs. Cela est fondamental pour deux raisons : - Durant le développement, il est bien plus aisé de comprendre ce qui ne fonctionne pas avec une bonne gestion d'erreurs. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture