10. Erreurs et diagnostics
10. Erreurs et diagnostics
Les diagnostics sont une partie du langage, pas un ajout. Un bon message dâerreur accĂ©lĂšre la comprĂ©hension et Ă©vite les cycles de debugging inutiles.
Lire un diagnostic
Prenez lâhabitude de lire le code dâerreur. Câest un index stable, utile pour la recherche et la documentation. Un diagnostic est une carte : il vous indique oĂč vous ĂȘtes et comment en sortir.
Réduire un problÚme
Quand une erreur est confuse :
Isolez le cas minimal. Supprimez ce qui nâest pas nĂ©cessaire. VĂ©rifiez que lâerreur reste.
Cette discipline accélÚre autant votre compréhension que celle des autres.
Messages utiles
Un bon diagnostic rĂ©pond Ă trois questions : oĂč ? quoi ? pourquoi ? Le reste est secondaire.
Des erreurs actionnables
Lâerreur idĂ©ale ne se contente pas de dire « câest faux ». Elle vous suggĂšre une action simple : ajouter un type, corriger un module, ou renommer un identifiant. Ce nâest pas un luxe : câest un outil de productivitĂ©.
Le diagnostic comme documentation
Les erreurs bien formulées deviennent une documentation vivante. Elles vous apprennent la grammaire, les conventions, et les limites du langage, sans vous renvoyer systématiquement à un manuel externe.
Ă retenir
Le meilleur diagnostic est celui qui vous pousse vers lâaction suivante, pas celui qui vous explique toute lâhistoire.
Exemple guidé : Ă©crire un message dâerreur
Créez un diagnostic avec :
une description courte,. le contexte,. une action suggérée.
Comparez avec un message âbrutâ sans action. Vous verrez la diffĂ©rence dâutilisabilitĂ©.
Erreurs courantes
Messages trop longs sans action. Messages vagues (âerror occurredâ). Oubli du contexte (fichier, ligne).
Checklist diagnostics
Le message dit quoi faire. Le contexte est prĂ©sent. Le code dâerreur est stable.
Exercice : un message utile
CrĂ©ez un message dâerreur pour âfichier introuvableâ. Comparez la version brute et une version qui inclut :
le chemin,. lâaction tentĂ©e,. la suggestion (âvĂ©rifiez le cheminâ).
Code complet (API actuelle)
use std/core/result.Result
proc must_positive(x: i32) -> Result[i32, string] {
if x <= 0 { give Result.Err("expected positive") }
give Result.Ok(x)
}
API idéale (future)
Un Result enrichi avec des codes dâerreur et des conseils dâaction.