Récemment, j’ai découvert une autre façon de gérer les erreurs.
Généralement, on utilise try/catch pour gérer les erreurs.
❌ Le problème avec throw
Quand une fonction throw une erreur, on est obligé d’utiliser try/catch, ce qui peut rendre le code plus complexe et difficile à lire.
✅ Une alternative : retourner l’erreur comme valeur
Plutôt que de lever une exception, on peut retourner un objet indiquant si l’opération a réussi ou échoué.
Exemple simple
type Result<T, E> = { success: true; data: T } | { success: false; error: E };
function safeDivide(a: number, b: number): Result<number, string> {
if (b === 0) {
return { success: false, error: "Division par zéro interdite !" };
}
return { success: true, data: a / b };
}
const result = safeDivide(10, 2);
if (result.success) {
console.log("✅ Résultat :", result.data);
} else {
console.error("❌ Erreur :", result.error);
}
Avec approche :
✅ Évite les try/catch en cascade
✅ Rend le code plus lisible et prévisible
✅ Type-safe avec TypeScript
…
Envie d’aller plus loin ?
Il existe des librairies comme neverthrow:(https://github.com/supermacro/neverthrow) permettent d’adopter cette approche de manière plus robuste.
