0Pricing
Zig Academy · Leçon

Renvoyer des erreurs depuis des fonctions

Rendez les échecs explicites dans les signatures.

Renvoyer des erreurs depuis des fonctions est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

L’échec dans la signature

Lorsqu’une fonction peut échouer, indiquez-le dans son type de retour. Une union avec erreurs comme ParseError!u32 avertit chaque appelant dès le départ.

fn parse(s: []const u8) ParseError!u32 {
    // ...
}

Renvoyer la valeur en cas de réussite

En cas de réussite, il vous suffit de renvoyer normalement la charge utile. Zig enveloppe cette valeur dans le côté réussite de l’union pour vous.

return 42;

Renvoyer une erreur à la place

Pour échouer, renvoyez l’une de vos erreurs au même endroit. L’unique instruction de retour détermine le côté de l’union que vous produisez.

if (s.len == 0) return error.Empty;

Un retour, deux issues

Une fonction utilisant une union avec erreurs peut renvoyer une valeur dans une branche et une erreur dans une autre. Les deux respectent le type déclaré.

if (ok) return value;
return error.Failed;

Void et erreurs

Une fonction qui effectue une action sans produire de valeur peut tout de même échouer. Utilisez !void : elle ne renvoie rien en cas de réussite, ou une erreur en cas d’échec.

fn save() !void {
    // ...
}

Les erreurs remontent au point d’appel

Lorsque vous appelez une fonction susceptible d’échouer, vous recevez vous aussi une union avec erreurs. Vous ne pouvez pas l’ignorer : le compilateur vous oblige à la gérer.

const n = parse(input);

Capturer les erreurs avec if

Un if peut séparer l’union : capturez la valeur dans la branche principale et l’erreur après else, en donnant un nom à chacune avec une barre verticale.

if (parse(input)) |n| {
    use(n);
} else |err| {
    report(err);
}

Nommer précisément l’ensemble d’erreurs

Énumérer l’ensemble exact avant ! rend votre contrat fiable. Les appelants connaissent la liste complète des échecs sans devoir lire le corps de la fonction.

fn open(p: []const u8) FileError!File {}

Les erreurs franchissent les limites des fonctions

Une erreur renvoyée profondément dans votre code ne remonte que lorsque chaque fonction de la chaîne déclare qu’elle peut elle aussi échouer.

Rendre l’échec explicite

C’est le principe central de la gestion des erreurs dans Zig : l’échec n’est jamais caché. La signature est une promesse sur ce qui peut mal se passer.

Le compilateur vous protège

Si vous oubliez de gérer une erreur renvoyée, la compilation échoue. Zig refuse de laisser un échec possible passer silencieusement.

Vérification rapide

Une fonction effectue une action mais ne renvoie aucune valeur utile, tout en pouvant échouer. Quel type de retour convient ?

Récapitulatif

Vous avez déclaré des fonctions susceptibles d’échouer avec !T, renvoyé des valeurs ou des erreurs avec une seule instruction de retour, et vu le compilateur obliger les appelants à les gérer. ✅

Questions Fréquemment Posées

La leçon « Renvoyer des erreurs depuis des fonctions » est-elle gratuite ?

Oui — le texte complet de « Renvoyer des erreurs depuis des fonctions » 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 « Renvoyer des erreurs depuis des fonctions » ?

Rendez les échecs explicites dans les signatures. 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 2 sur 4.

Combien de temps prend la leçon « Renvoyer des erreurs depuis des fonctions » ?

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. Ensembles d'erreurs et union !T
  2. Renvoyer des erreurs depuis des fonctions
  3. Propager les échecs avec try
  4. Ensembles d'erreurs déduits
← Retour à Zig Academy