herydj

Une autre façon de gérer les erreurs.

Plutôt que de lever une exception, retourner l'erreur comme valeur.

30 janvier 2025
errorhandlingtypescript

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.

Une autre façon de gérer les erreurs.