« Programmation C/Erreurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Thierry46 (discussion | contributions)
→‎Exemple : Modification de l'exemple
m →‎Utilisation : ortografe
Ligne 12 :
On peut alors utiliser la variable <code>errno</code>, de type <code>int</code>, pour traiter les erreurs<ref name="typeErrno"><code>errno</code> peut être définie par une macro ou un identificateur. N'essayez donc pas de récupérer son adresse.</ref>.
 
Lorsqu'on veut utiliser <code>errno</code> pour déterminer la cause d'un échec, il faut d'abord s'assurer que la fonction a bel et bien échoué. Le C laissant une certaine liberté dans la manière de signaler un échec, il n'y a pratiquement aucun mécanisme universel qui permette de détecter une telle situation, chaque fonction étant presque un cas particulier. CepandantCependant, une pratique relativement répandue est de retourner un code spécifique, en général en dehors de l'intervalle de ce qu'on attend. Par exemple, lorsque la fonction est censée allouer un objet et retourne un pointeur, une erreur est souvent signalée en retournant un pointeur nul, et la variable <code>errno</code> décrit plus en détail la nature de l'erreur.
 
Il est nécessaire de placer <code>errno</code> à 0 ''avant'' d'utiliser la fonction qui peut échouer, car les fonctions de la bibliothèque standard ne sont pas obligées de la mettre à zéro en cas de succès. Si on ne la réinitialisait pas « manuellement », on pourrait « voir » le résultat d'une erreur causée par un appel de fonction antérieur. La procédure à suivre est donc la suivante :