0Pricing
Zig Academy · Leçon

Envelopper et relancer des erreurs

Ajoutez du contexte à mesure que les erreurs remontent.

Envelopper et relancer des erreurs est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Zig Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Zig Academy comprend 4 leçons au total.

Les erreurs remontent

Lorsqu’une fonction ne peut pas traiter elle-même un échec, elle transmet l’erreur à son appelant. En chemin, vous pouvez la modifier ou la renvoyer.

Renvoyer avec try

Le renvoi le plus simple se fait avec try. Il transmet l’erreur d’origine telle quelle à votre appelant, de sorte que la même valeur continue de remonter.

const data = try readFile(path);

Capturez, puis renvoyez

Pour traduire une erreur, capturez-la avec catch et renvoyez-en une autre. Vous remplacez ainsi une erreur de bas niveau par une erreur adaptée à votre propre API.

const f = open(path) catch return error.ConfigMissing;

Mappez les erreurs avec switch

Associez catch à un switch pour transformer chaque erreur sous-jacente en une erreur plus claire, tout en transmettant les autres sans modification.

parse(s) catch |e| switch (e) {
    error.Empty => return error.NoInput,
    else => return e,
};

Zig ne fournit pas de traces de pile dans les valeurs

Dans Zig, une erreur est simplement une étiquette, et non un objet contenant un contexte. Pour ajouter des précisions, renvoyez une erreur plus descriptive qui vous appartient.

Ajoutez le contexte séparément

Puisque l’étiquette d’erreur ne contient aucun message, consignez les détails à l’endroit où l’échec se produit, puis renvoyez l’erreur de niveau supérieur à l’appelant.

open(path) catch |e| {
    std.log.err("open {s}: {}", .{ path, e });
    return error.LoadFailed;
};

Élargissez l’ensemble d’erreurs

Si vous renvoyez une nouvelle erreur, l’ensemble d’erreurs de votre fonction doit l’inclure. Un ensemble !T inféré s’agrandit pour couvrir tout ce que vous renvoyez.

fn load() !Config {
    return open(".cfg") catch error.LoadFailed;
}

Conserver ou remplacer

Décidez à chaque couche : transmettez l’erreur exacte avec try, ou remplacez-la par une erreur plus pertinente pour votre appelant. Les deux approches sont valides.

Gardez des frontières claires

À la frontière d’un module, mappez les erreurs internes vers un petit ensemble public. Les appelants dépendent alors de noms stables, et non de vos détails internes.

Associez-le à errdefer

Lorsque vous renvoyez une erreur, tout errdefer dans la portée s’exécute d’abord. Vous pouvez donc annuler les ressources et traduire l’erreur dans un même chemin.

Des échecs significatifs

Enveloppées, les erreurs transforment une cause brute en un message adapté à votre domaine. L’appelant voit une erreur claire plutôt qu’un détail interne.

Vérification rapide

Vous voulez remplacer l’erreur de bas niveau error.NotFound par votre propre erreur error.ConfigMissing pour l’appelant. Quelle solution fonctionne ?

Récapitulatif

Vous avez renvoyé des erreurs avec try, les avez transformées avec catch et switch, consigné le contexte et élargi les ensembles d’erreurs afin de conserver des échecs significatifs. ✅

Questions Fréquemment Posées

La leçon « Envelopper et relancer des erreurs » est-elle gratuite ?

Oui — le texte complet de « Envelopper et relancer des erreurs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Zig Academy, passe à CoddyKit PRO. Le cours Zig Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Envelopper et relancer des erreurs » ?

Ajoutez du contexte à mesure que les erreurs remontent. Tu pratiques Zig Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Zig Academy ?

Aucune expérience préalable n'est requise. Zig Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Envelopper et relancer des erreurs » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Zig Academy ?

Oui. Chaque leçon Zig Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Récupérer avec catch
  2. Sélectionner selon des erreurs précises
  3. errdefer pour nettoyer après un échec
  4. Envelopper et relancer des erreurs
← Retour à Zig Academy