Returnera fel från funktioner
Gör misslyckanden tydliga i signaturerna
Returnera fel från funktioner är en gratis lektion i Zig Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Zig Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Zig Academy innehåller totalt 4 lektioner.
Fel i funktionssignaturen
När en funktion kan misslyckas anger du det i dess returtyp. En felunion som ParseError!u32 varnar alla anropare direkt.
fn parse(s: []const u8) ParseError!u32 {
// ...
}Returnera framgångsvärdet
Vid ett lyckat förlopp returnerar du bara return payload-värdet som vanligt. Zig placerar det vanliga värdet på unionens framgångssida åt dig.
return 42;Returnera ett fel i stället
För att misslyckas returnerar du ett av dina fel på samma ställe. Den enda return-satsen avgör vilken sida av unionen du producerar.
if (s.len == 0) return error.Empty;En returnering, två utfall
En funktion med en felunion kan returnera ett värde i en gren och ett fel i en annan. Båda uppfyller den deklarerade typen.
if (ok) return value;
return error.Failed;Void plus fel
En funktion som utför arbete men inte ger något värde kan fortfarande misslyckas. Använd !void så returnerar den inget vid framgång eller ett fel vid misslyckande.
fn save() !void {
// ...
}Fel bubblar upp vid anropsstället
När du anropar en funktion som kan misslyckas får du också en felunion. Du kan inte ignorera den; kompilatorn tvingar dig att hantera den.
const n = parse(input);Fånga fel med if
En if kan dela upp unionen: fånga värdet i huvudgrenen och felet efter else, och namnge båda med ett lodstreck.
if (parse(input)) |n| {
use(n);
} else |err| {
report(err);
}Namnge felmängden exakt
Genom att ange den exakta mängden före ! förblir kontraktet korrekt. Anroparna ser hela listan över fel utan att läsa funktionskroppen.
fn open(p: []const u8) FileError!File {}Fel passerar funktionsgränser
Ett fel som returneras långt inne i koden färdas utåt endast när varje funktion i kedjan deklarerar att även den kan misslyckas.
Gör misslyckanden explicita
Detta är kärnan i Zigs felhantering: misslyckanden döljs aldrig. Signaturen är ett löfte om vad som kan gå fel.
Kompilatorn hjälper dig
Glömmer du att hantera ett returnerat fel misslyckas bygget. Zig låter inte ett möjligt fel passera obemärkt.
Snabb kontroll
En funktion utför arbete men returnerar inget användbart värde, men kan ändå misslyckas. Vilken returtyp passar?
Sammanfattning
Du deklarerade funktioner som kan misslyckas med !T, returnerade värden eller fel från samma returnering och såg hur kompilatorn tvingar anroparna att hantera dem. ✅
Lär dig Zig med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Returnera fel från funktioner” gratis?
Ja – hela texten till ”Returnera fel från funktioner” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Zig Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Zig Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Returnera fel från funktioner”?
Gör misslyckanden tydliga i signaturerna Ni övar på Zig Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Zig Academy?
Du behöver inga förkunskaper. Utbildningen i Zig Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Returnera fel från funktioner”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Zig Academy-lektionen?
Ja. Varje Zig Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Error sets och !T-unionen
- Returnera fel från funktioner
- Propagera fel med try
- Härledda error sets