Zbiory błędów i unia !T
Traktuj błędy jak pełnoprawne wartości.
Zbiory błędów i unia !T to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 1 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.
Błędy są wartościami
W Zig nie ma wyjątków. Błąd jest zwykłą wartością, którą funkcja może zwrócić, więc niepowodzenie jest widoczne w kodzie.
Zadeklaruj zbiór błędów
Zbiór błędów to nazwana grupa możliwych błędów. Wypisuje się jego warianty podobnie jak elementy enuma opisujące możliwe problemy.
const FileError = error{
NotFound,
PermissionDenied,
};Odwołaj się do pojedynczego błędu
Do każdego elementu zbioru błędów odwołuje się za pomocą kropki. Wartość FileError.NotFound jest konkretnym błędem, który można zwrócić.
return FileError.NotFound;Anonimowe zbiory błędów
Nazwa nie zawsze jest potrzebna. Zapisanie error{Empty} bezpośrednio w kodzie tworzy mały, jednorazowy zbiór błędów w miejscu użycia.
return error.Empty;Wykrzyknik oznacza możliwość błędu
! w typie tworzy unię błędów. Typ przed nim jest wartością w przypadku powodzenia, a zamiast niej może pojawić się błąd.
FileError!u32Odczytuj !T jako typ alternatywny
!u32 można rozumieć jako wartość u32 albo błąd. Pojedyncza wartość reprezentuje oba wyniki, więc wywołujący musi wybrać jeden z nich.
Dwie strony unii
Unia błędów ma w czasie działania dokładnie dwie postacie: prawidłowy ładunek typu T albo jeden z błędów ze zbioru. Nigdy oba naraz.
Ustaw przed wykrzyknikiem
Umieść zbiór błędów po lewej stronie !, aby dokładnie określić, które błędy są dozwolone. Dzięki temu informacja o możliwym niepowodzeniu jest zapisana w typie.
fn parse(s: []const u8) FileError!u32 {
// ...
}Scalanie zbiorów błędów
Operator || zastosowany do dwóch zbiorów błędów łączy je w jeden. Dzięki temu funkcja może jednocześnie dopuszczać błędy z kilku źródeł.
const AllError = FileError || NetError;anyerror jest nadzbiorem
Wbudowany typ anyerror zawiera każdy możliwy błąd. Jest wygodny, ale traci precyzję nazwanego zbioru, dlatego należy używać go oszczędnie.
fn risky() anyerror!void {}Dlaczego zbiory są pomocne
Ponieważ błędy należą do typu, kompilator zna każde niepowodzenie, które może wystąpić w funkcji. Nic nie umknie jako nieobsłużone.
Szybkie sprawdzenie
Funkcja ma typ FileError!u32. Co on opisuje?
Podsumowanie
Poznano zbiory błędów, unię !T, scalanie zbiorów za pomocą || oraz anyerror. Błędy są zwykłymi wartościami śledzonymi przez system typów. ✅
Często zadawane pytania
Czy lekcja „Zbiory błędów i unia !T” jest bezpłatna?
Tak — pełny tekst „Zbiory błędów i unia !T” 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 „Zbiory błędów i unia !T”?
Traktuj błędy jak pełnoprawne wartości. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Zbiory błędów i unia !T”?
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
- Zbiory błędów i unia !T
- Zwracanie błędów z funkcji
- Propagowanie niepowodzeń za pomocą try
- Wnioskowane zbiory błędów