0Pricing
Zig Academy · Lekcja

Przełączanie na podstawie konkretnych błędów

Rozgałęziaj działanie zależnie od zwróconego błędu.

Przełączanie na podstawie konkretnych błędów 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.

Nie wszystkie błędy są takie same

Jedna wartość zastępcza rzadko pasuje do każdego niepowodzenia. Brakujący plik i niepoprawne dane wejściowe często wymagają innej obsługi, dlatego warto rozgałęziać kod zależnie od tego, który błąd wystąpił.

Przechwyć, a następnie użyj switch

Proszę przechwycić błąd z catch, a następnie przekazać go do switch. Każdy przypadek może zareagować na konkretny błąd we właściwy dla siebie sposób.

open(path) catch |err| switch (err) {
    error.NotFound => create(path),
    else => return err,
};

Błędy są wartościami switch

Błąd taki jak error.NotFound jest zwykłą wartością, więc switch dopasowuje go tak samo jak liczbę lub znacznik enuma.

switch (err) {
    error.Timeout => retry(),
    error.Denied => reportDenied(),
}

switch musi być wyczerpujący

Instrukcja switch dotycząca błędu musi obejmować każdy możliwy błąd należący do danego zbioru. Zig odmawia kompilacji, jeśli brakuje choć jednego przypadku.

Pozostałe przypadki obejmij za pomocą else

Proszę dodać gałąź else, aby przechwycić każdy błąd, którego nie wymieniono osobno. Dzięki temu switch pozostaje wyczerpujący bez konieczności wypisywania każdego wariantu.

switch (err) {
    error.NotFound => createDefault(),
    else => return err,
}

Każda gałąź zwraca wartość

Ponieważ switch jest wyrażeniem, każda gałąź może utworzyć wartość. Całe wyrażenie catch zwróci więc to, co zwróci pasująca gałąź.

const n = parse(s) catch |e| switch (e) {
    error.Empty => 0,
    else => -1,
};

Grupowanie błędów za pomocą przecinków

Jeśli kilka błędów wymaga takiej samej reakcji, można wypisać je w jednej gałęzi, oddzielając je przecinkami. Dzięki temu powiązane przypadki pozostają uporządkowane i zgrupowane.

switch (err) {
    error.Timeout, error.Reset => retry(),
    else => return err,
}

Ponowne zgłaszanie błędów, których nie można obsłużyć

W gałęzi można użyć return, aby przekazać błąd wyżej. Należy obsłużyć przypadki, które są Państwu znane, a resztę pozostawić wywołującemu.

else => return err,

Najpierw połącz z try

Często warto użyć try dla typowej ścieżki i przełączać się tylko dla błędów, które rzeczywiście wymagają niestandardowej logiki. Dzięki temu poprawna ścieżka pozostaje przejrzysta.

Przejrzystość dzięki szczegółowości

Przełączanie na podstawie błędów dokładnie dokumentuje oczekiwane niepowodzenia. Czytelnik widzi każdy przypadek oraz reakcję kodu na jego wystąpienie.

Kompilator czuwa

Ponieważ instrukcja switch musi być kompletna, dodanie później nowego błędu wymusi jego obsługę. Pominięte przypadki staną się błędami kompilacji, a nie usterkami programu.

Szybkie sprawdzenie

Wykonują Państwo switch na przechwyconym błędzie, ale wymieniają tylko niektóre warianty. Czego wymaga Zig?

Podsumowanie

Przechwycili Państwo błąd i użyli switch, aby rozgałęziać kod według błędów, grupować powiązane przypadki oraz ponownie zgłaszać pozostałe. Kompilator dba o kompletność rozwiązania. ✅

Często zadawane pytania

Czy lekcja „Przełączanie na podstawie konkretnych błędów” jest bezpłatna?

Tak — pełny tekst „Przełączanie na podstawie konkretnych błędów” 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 „Przełączanie na podstawie konkretnych błędów”?

Rozgałęziaj działanie zależnie od zwróconego błędu. Ć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 „Przełączanie na podstawie konkretnych błędów”?

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. Odzyskiwanie za pomocą catch
  2. Przełączanie na podstawie konkretnych błędów
  3. errdefer do sprzątania po niepowodzeniu
  4. Zawijanie i ponowne zgłaszanie błędów
← Powrót do Zig Academy