Avvolgere e rilanciare gli errori
Aggiungere contesto mentre gli errori risalgono la catena
Avvolgere e rilanciare gli errori è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.
Gli errori risalgono
Quando una funzione non può gestire autonomamente un fallimento, passa l'errore al chiamante. Nel percorso può modificarlo o rilanciarlo.
Rilanciare con try
Il modo più semplice per rilanciare un errore è try. Inoltra l'errore originale senza modificarlo al chiamante, così lo stesso valore continua a risalire.
const data = try readFile(path);Catturare, poi restituire
Per tradurre un errore, lo catturi con catch e ne restituisca uno diverso. In questo modo sostituisce un errore di basso livello con uno adatto alla sua API.
const f = open(path) catch return error.ConfigMissing;Mappare gli errori con switch
Combini catch con uno switch per associare ogni errore sottostante a uno più chiaro, lasciando invariati gli altri.
parse(s) catch |e| switch (e) {
error.Empty => return error.NoInput,
else => return e,
};Zig non ha stack trace come valori
In Zig un errore è solo un tag, non un oggetto che contiene contesto. Per aggiungere dettagli, rilanci un errore più descrittivo definito da lei.
Aggiungere il contesto separatamente
Poiché il tag dell'errore non contiene messaggi, registri i dettagli nel punto in cui si verifica il fallimento, quindi restituisca al chiamante l'errore di livello superiore.
open(path) catch |e| {
std.log.err("open {s}: {}", .{ path, e });
return error.LoadFailed;
};Ampliare l'insieme di errori
Se restituisce un nuovo errore, l'insieme di errori della funzione deve includerlo. Un insieme !T inferito cresce fino a coprire tutto ciò che restituisce.
fn load() !Config {
return open(".cfg") catch error.LoadFailed;
}Conservare o sostituire
Decida in base al livello: inoltri l'errore esatto con try oppure lo sostituisca con uno più significativo per il chiamante. Entrambe le scelte sono valide.
Mantenere puliti i confini
Al confine di un modulo, mappi gli errori interni su un piccolo insieme pubblico. I chiamanti dipenderanno così da nomi stabili, non dai dettagli interni.
Abbinare a errdefer
Quando rilancia un errore, ogni errdefer nello scope viene comunque eseguito per primo. Può quindi eseguire il rollback delle risorse e tradurre l'errore nello stesso percorso.
Fallimenti significativi
Avvolgere gli errori trasforma una causa grezza in un messaggio adatto al dominio. Il chiamante vede un errore chiaro invece di un dettaglio interno.
Verifica rapida
Vuole sostituire l'errore di basso livello error.NotFound con il proprio error.ConfigMissing per il chiamante. Quale soluzione funziona?
Riepilogo
Ha rilanciato gli errori con try, li ha mappati tramite catch e switch, ha registrato il contesto e ampliato gli insiemi di errori per mantenere significativi i fallimenti. ✅
Impara Zig con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Avvolgere e rilanciare gli errori» è gratuita?
Sì — il testo completo di «Avvolgere e rilanciare gli errori» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Zig Academy, passa a CoddyKit PRO. Il corso Zig Academy include 4 lezioni in totale.
Cosa imparerò in «Avvolgere e rilanciare gli errori»?
Aggiungere contesto mentre gli errori risalgono la catena Eserciti Zig Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Zig Academy?
Non è richiesta alcuna esperienza precedente. Zig Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Avvolgere e rilanciare gli errori»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Zig Academy?
Sì. Ogni lezione Zig Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Recuperare con catch
- Usare switch su errori specifici
- errdefer per la pulizia in caso di errore
- Avvolgere e rilanciare gli errori