Własne wyjątki i rethrow
Definiowanie znaczących błędów i ponowne ich zgłaszanie
Własne wyjątki i rethrow to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 4 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 Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.
Błędy, które coś oznaczają
Ogólne wyjątki ukrywają intencję. Własny wyjątek nazywa konkretny problem, dzięki czemu błędy są czytelne w całej aplikacji. 🏷️
Implementowanie Exception
Należy utworzyć klasę, która implements Exception. Oznacza to, że jest ona typem błędu, który Dart i inni programiści natychmiast rozpoznają jako możliwy do zgłoszenia.
class PaymentException implements Exception {}Przechowywanie komunikatu
Warto przekazywać wyjątkom pole message w konstruktorze, aby procedury obsługi mogły odczytać przyczynę błędu.
class PaymentException implements Exception {
final String message;
PaymentException(this.message);
}Czytelne toString
Należy przesłonić metodę toString, aby wyświetlenie wyjątku pokazywało jasny komunikat zamiast samej nazwy klasy.
@override
String toString() => 'PaymentException: $message';Zgłaszanie własnego wyjątku
Własny wyjątek zgłasza się tak samo jak wbudowany. Gdy reguła zostanie naruszona, należy użyć throw z nową instancją wyjątku.
throw PaymentException('Card declined');Przechwytywanie własnego typu
Własny wyjątek można przechwycić za pomocą klauzuli on, tak jak typy wbudowane, aby obsłużyć ten konkretny przypadek.
try {
pay();
} on PaymentException catch (e) {
print(e);
}Czasem nie da się tego naprawić
Procedura obsługi może zarejestrować błąd, ale nie być w stanie go rozwiązać. Zamiast go ignorować, można przekazać go dalej za pomocą rethrow.
Słowo kluczowe rethrow
rethrow ponownie zgłasza bieżący wyjątek, zachowując jego pierwotny ślad stosu, dzięki czemu kod wywołujący widzi, gdzie wyjątek naprawdę powstał.
catch (e) {
log(e);
rethrow;
}rethrow lepsze niż throw e
Zapis throw e resetuje ślad stosu, natomiast rethrow zachowuje go bez zmian. Przy ponownym zgłaszaniu wyjątku w catch należy zawsze preferować rethrow.
Zarejestruj, a potem przekaż dalej
Typowy schemat wygląda tak: przechwycić błąd, aby go logować, a następnie użyć rethrow, by wyższa warstwa zdecydowała, jak go obsłużyć.
catch (e) {
logger.error(e);
rethrow;
}Dodawanie przydatnych pól
Własne wyjątki mogą przechowywać dodatkowe dane, takie jak code lub wartość, która spowodowała błąd, zapewniając procedurom obsługi więcej kontekstu do działania.
class ApiException implements Exception {
final int code;
ApiException(this.code);
}Szybkie sprawdzenie
Dlaczego w catch należy używać rethrow zamiast throw e?
Podsumowanie
Potrafi już Pan/Pani tworzyć znaczące wyjątki, które implementują Exception, przechowują dane i używają rethrow do poprawnego przekazywania błędów wyżej. 🚀
Ucz się Dart 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 „Własne wyjątki i rethrow” jest bezpłatna?
Tak — pełny tekst „Własne wyjątki i rethrow” 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 Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Własne wyjątki i rethrow”?
Definiowanie znaczących błędów i ponowne ich zgłaszanie Ćwiczysz Dart 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ąć Dart Academy?
Nie wymagamy żadnego doświadczenia. Dart 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 4 z 4.
Ile czasu zajmuje lekcja „Własne wyjątki i rethrow”?
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 Dart Academy?
Tak. Każda lekcja Dart 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
- throw, try i catch
- Klauzule on i typy wyjątków
- finally i gwarantowane sprzątanie
- Własne wyjątki i rethrow