Zig Academy · Lekcja

Zwracanie błędów z funkcji

Jawnie sygnalizuj możliwość niepowodzenia w sygnaturach.

Lekcja 2 z 413 kroki

Zwracanie błędów z funkcji to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.

Niepowodzenie w sygnaturze

Gdy funkcja może zakończyć się niepowodzeniem, należy zaznaczyć to w jej typie zwracanym. Unia błędów, taka jak ParseError!u32, od razu ostrzega każdego wywołującego.

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

Zwróć wartość powodzenia

W przypadku powodzenia wystarczy zwyczajnie zwrócić ładunek. Zig automatycznie opakuje tę zwykłą wartość po stronie powodzenia unii.

return 42;

Zamiast tego zwróć błąd

Aby zgłosić niepowodzenie, zwróć jeden ze swoich błędów w tym samym miejscu. Pojedyncza instrukcja return decyduje, którą stronę unii tworzysz.

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

Jedno return, dwa wyniki

Funkcja z unią błędów może zwrócić wartość w jednej gałęzi, a błąd w innej. Oba wyniki spełniają zadeklarowany typ.

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

Void i błędy

Funkcja, która wykonuje działanie, ale nie zwraca wartości, również może zakończyć się niepowodzeniem. Użyj !void, aby w przypadku powodzenia nie zwracała nic, a w przypadku błędu zwracała błąd.

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

Błędy propagują się w miejscu wywołania

Po wywołaniu funkcji, która może zakończyć się niepowodzeniem, również otrzymujesz unię błędów. Nie możesz jej zignorować — kompilator wymaga, aby ją obsłużyć.

const n = parse(input);

Przechwytywanie błędów za pomocą if

if może rozdzielić unię: przechwycić wartość w głównej gałęzi, a błąd po else, nadając każdemu z nich nazwę za pomocą pionowej kreski.

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

Precyzyjnie nazwij zbiór błędów

Wypisanie dokładnego zbioru przed ! sprawia, że kontrakt pozostaje zgodny z rzeczywistością. Wywołujący poznaje pełną listę możliwych niepowodzeń bez czytania treści funkcji.

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

Błędy przekraczają granice funkcji

Błąd zwrócony głęboko wewnątrz kodu przedostaje się na zewnątrz tylko wtedy, gdy każda funkcja w łańcuchu zadeklaruje, że również może zakończyć się niepowodzeniem.

Jawnie określ niepowodzenie

To istota obsługi błędów w Zig: niepowodzenie nigdy nie jest ukryte. Sygnatura jest obietnicą dotyczącą tego, co może pójść nie tak.

Kompilator czuwa

Jeśli zapomnisz obsłużyć zwrócony błąd, kompilacja kończy się niepowodzeniem. Zig nie pozwala, aby możliwe niepowodzenie po cichu umknęło.

Szybkie sprawdzenie

Funkcja wykonuje działanie, ale nie zwraca użytecznej wartości i może zakończyć się niepowodzeniem. Jaki typ zwracany będzie odpowiedni?

Podsumowanie

Zadeklarowano funkcje mogące zakończyć się niepowodzeniem za pomocą !T, zwracano wartości lub błędy z jednego return i zobaczono, jak kompilator wymusza ich obsługę przez wywołujących. ✅

Bezpłatny start

Ucz się Zig dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Zwracanie błędów z funkcji” jest bezpłatna?

Tak — pełny tekst „Zwracanie błędów z funkcji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zwracanie błędów z funkcji”?

Jawnie sygnalizuj możliwość niepowodzenia w sygnaturach. Ćwiczysz Zig Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Zig Academy?

Nie wymagamy żadnego doświadczenia. Zig Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Zwracanie błędów z funkcji”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Zig Academy?

Tak. Każda lekcja Zig Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Zbiory błędów i unia !T
  2. Zwracanie błędów z funkcji
  3. Propagowanie niepowodzeń za pomocą try
  4. Wnioskowane zbiory błędów
← Powrót do Zig Academy