0Pricing
Zig Academy · Leçon

defer ou errdefer en pratique

Choisissez entre une exécution systématique et une exécution en cas d'erreur.

defer ou errdefer en pratique est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Deux mots-clés de nettoyage

Zig vous fournit deux outils de programmation : defer s’exécute toujours, tandis qu’errdefer s’exécute uniquement lorsque la portée se termine avec une erreur.

defer signifie toujours

Utilisez defer lorsque le nettoyage doit avoir lieu quoi qu’il arrive, par exemple pour fermer un fichier ouvert pendant toute la fonction.

const f = try open();
defer f.close();

errdefer signifie en cas d’échec

Un errdefer ne s’exécute que si la portée se termine à cause d’une erreur. Lors d’un retour réussi, il est discrètement ignoré.

const buf = try alloc();
errdefer free(buf);

Pourquoi l’ignorer en cas de réussite

Parfois, vous construisez une valeur pour la return. En cas de réussite, l’appelant en est propriétaire : vous ne devez donc pas la libérer. errdefer respecte cela.

Objets construits partiellement

errdefer est particulièrement utile dans les constructeurs. Si une étape ultérieure échoue, il annule les allocations précédentes afin qu’un objet partiellement construit ne provoque jamais de fuite.

const a = try alloc();
errdefer free(a);
const b = try alloc();

La réussite transfère la propriété

Lorsque chaque étape réussit, la fonction renvoie la valeur et les errdefer ne s’exécutent pas. La propriété est transférée proprement à l’appelant.

return MyType{ .a = a, .b = b };

Ils se combinent bien

Vous pouvez utiliser les deux. Un defer gère la mémoire temporaire de travail, tandis qu’un errdefer protège le résultat que vous prévoyez de renvoyer.

Les deux respectent l’ordre inverse

Comme defer, plusieurs errdefer sont déroulés dans l’ordre inverse. En cas d’erreur, Zig exécute ensemble les defer et errdefer correspondants, du plus récent au plus ancien.

L’emplacement est important

Placez chaque errdefer juste après l’étape qu’il protège. Il ne protège que les échecs qui surviennent après que sa propre ligne a été atteinte.

Une règle simple

Posez-vous une question : ce nettoyage doit-il aussi s’exécuter en cas de réussite ? Oui signifie defer ; uniquement en cas d’erreur signifie errdefer.

Sans fuite par construction

Ensemble, ces mots-clés vous permettent d’écrire des fonctions sans fuite sur tous les chemins, en cas de réussite comme d’échec, sans suivi manuel.

Vérification rapide

Quand errdefer s’exécute-t-il par rapport à defer ?

Récapitulatif

Utilisez defer lorsque le nettoyage doit toujours s’exécuter, et errdefer lorsqu’il doit seulement annuler le travail sur le chemin d’erreur. ✅

Questions Fréquemment Posées

La leçon « defer ou errdefer en pratique » est-elle gratuite ?

Oui — le texte complet de « defer ou errdefer en pratique » 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 « defer ou errdefer en pratique » ?

Choisissez entre une exécution systématique et une exécution en cas d'erreur. 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 3 sur 4.

Combien de temps prend la leçon « defer ou errdefer en pratique » ?

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. Ce que defer garantit
  2. Ordre d'exécution de plusieurs defer
  3. defer ou errdefer en pratique
  4. Associer ouverture et fermeture
← Retour à Zig Academy