Adnotacja raises
Oznacz funkcje, które mogą zakończyć się błędem.
Adnotacja raises to bezpłatna lekcja Mojo Academy na CoddyKit. To lekcja 3 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 Mojo Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Mojo Academy zawiera 4 lekcji w sumie.
Szczerość w kwestii błędów
Mojo wymaga, aby funkcje jasno informowały, czy mogą zakończyć się błędem. Słowo kluczowe raises oznacza funkcję, która może zgłosić błąd. 📣
Dodawanie raises
Umieść raises bezpośrednio za listą argumentów. Informuje ono wywołujących, że funkcja nie zawsze musi zakończyć się powodzeniem.
fn parse(text: String) raises -> Int:
...def może zawsze zgłaszać błędy
Elastyczna funkcja def może zgłaszać błędy bez adnotacji. Mojo domyślnie traktuje def jako konstrukcję, która może zakończyć się błędem.
def load(name: String):
raise Error("missing")fn musi to zadeklarować
Ścisła funkcja fn nie może zgłaszać błędów, chyba że zostanie dodane raises. Dzięki temu możliwość błędu jest jawna i łatwa do zauważenia.
fn safe(x: Int) -> Int:
return x + 1Wywoływanie funkcji zgłaszającej błędy
Wywołanie elementu oznaczonego przez raises oznacza konieczność obsłużenia błędu, zwykle wewnątrz bloku try.
try:
var n = parse("42")
except e:
print(e)Błędy propagują się przez raises
Jeśli funkcja zgłaszająca błędy zostanie wywołana wewnątrz innej funkcji raises, błąd po prostu propaguje się wyżej bez użycia try.
Brak raises oznacza bezpieczeństwo
Funkcja bez raises obiecuje, że nie zgłosi błędu. Wywołujący mogą korzystać z niej swobodnie, bez bloków try.
Kompilator sprawdza kod
Compiler Mojo odrzuca zgłoszenie błędu wewnątrz funkcji fn, która nie zgłasza błędów. Wykrywa to niezgodności, zanim program zostanie uruchomiony.
Kod, który dokumentuje się sam
Słowo kluczowe raises pełni funkcję żywej dokumentacji. Jedno spojrzenie na sygnaturę wystarczy, aby sprawdzić, czy wywołanie może się nie powieść.
Ogranicz powierzchnię błędów
Oznaczaj przez raises tylko funkcje, które rzeczywiście mogą zakończyć się błędem. Mniejsza liczba takich funkcji oznacza prostsze i bezpieczniejsze miejsca ich wywołania.
raises i typy zwracane
Można połączyć raises ze zwykłym typem zwracanym. Funkcja zwraca wartość w przypadku sukcesu albo zgłasza błąd w przypadku niepowodzenia.
fn divide(a: Int, b: Int) raises -> Int:
if b == 0:
raise Error("divide by zero")
return a // bSzybkie sprawdzenie
Proszę zastanowić się, jak współdziałają fn i słowo kluczowe raises.
Podsumowanie
Nauczył(a) się Pan/Pani, że raises deklaruje możliwość błędu funkcji, że def może zawsze zgłaszać błędy, podczas gdy fn musi mieć to jawnie zadeklarowane, oraz że kompilator to wymusza. 🎯
Ucz się Mojo 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 „Adnotacja raises” jest bezpłatna?
Tak — pełny tekst „Adnotacja raises” 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 Mojo Academy, przejdź na CoddyKit PRO. Kurs Mojo Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Adnotacja raises”?
Oznacz funkcje, które mogą zakończyć się błędem. Ćwiczysz Mojo 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ąć Mojo Academy?
Nie wymagamy żadnego doświadczenia. Mojo 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 3 z 4.
Ile czasu zajmuje lekcja „Adnotacja raises”?
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 Mojo Academy?
Tak. Każda lekcja Mojo 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.