Returnér fejl fra funktioner
Gør fejl eksplicitte i funktionssignaturer.
Returnér fejl fra funktioner er en gratis Zig Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Zig Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Zig Academy-kurset indeholder 4 lektioner i alt.
Fejl i signaturen
Når en funktion kan mislykkes, skal du angive det i dens returtype. En fejl-union som ParseError!u32 advarer alle kaldere på forhånd.
fn parse(s: []const u8) ParseError!u32 {
// ...
}Returnér succesværdien
På den normale sti skal du blot returnere nyttelasten som normalt. Zig pakker automatisk den almindelige værdi ind på unionens succes-side for dig.
return 42;Returnér i stedet en fejl
Hvis du vil fejle, skal du returnere en af dine fejl samme sted. Den enkelte return-sætning afgør, hvilken side af unionen du producerer.
if (s.len == 0) return error.Empty;Én returnering, to resultater
En funktion med en fejl-union kan returnere en værdi i én gren og en fejl i en anden. Begge dele opfylder den deklarerede type.
if (ok) return value;
return error.Failed;Void plus fejl
En funktion, der udfører arbejde uden at give en værdi, kan stadig mislykkes. Brug !void, så den returnerer ingenting ved succes eller en fejl ved mislykket udførelse.
fn save() !void {
// ...
}Fejl bobler op ved kaldestedet
Når du kalder en funktion, der kan mislykkes, modtager du også en fejl-union. Du kan ikke ignorere den; compileren tvinger dig til at håndtere den.
const n = parse(input);Fang fejl med if
En if kan opdele unionen: indfang værdien i hovedgrenen og fejlen efter else, og giv hver af dem et navn med en pipe.
if (parse(input)) |n| {
use(n);
} else |err| {
report(err);
}Navngiv fejlsættet præcist
Hvis du angiver det præcise sæt før !, forbliver din kontrakt retvisende. Kaldere lærer hele listen over fejl uden at læse funktionskroppen.
fn open(p: []const u8) FileError!File {}Fejl krydser funktionsgrænser
En fejl, der returneres dybt inde i din kode, bevæger sig kun udad, når hver funktion i kæden deklarerer, at den også kan mislykkes.
Gør fejl eksplicitte
Dette er kernen i Zigs fejlhåndtering: fejl er aldrig skjulte. Signaturen er et løfte om, hvad der kan gå galt.
Compileren har din ryg
Hvis du glemmer at håndtere en returneret fejl, mislykkes buildet. Zig nægter at lade en mulig fejl slippe ubemærket igennem.
Hurtigt tjek
En funktion udfører arbejde, men returnerer ingen nyttig værdi, selvom den kan mislykkes. Hvilken returtype passer?
Opsummering
Du har deklareret funktioner, der kan mislykkes, med !T, returneret værdier eller fejl fra samme returnering og set compileren tvinge kaldere til at håndtere dem. ✅
Lær Zig med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Returnér fejl fra funktioner” gratis?
Ja — hele teksten til “Returnér fejl fra funktioner” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Zig Academy-kurset, skal du opgradere til CoddyKit PRO. Zig Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Returnér fejl fra funktioner”?
Gør fejl eksplicitte i funktionssignaturer. Du øver dig i Zig Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Zig Academy?
Der kræves ingen tidligere erfaring. Zig Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Returnér fejl fra funktioner”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Zig Academy-lektion?
Ja. Alle Zig Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Fejlsæt og !T-unionen
- Returnér fejl fra funktioner
- Propagér fejl med try
- Udledte fejlsæt