Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Java
Javamedium

Wyjątki checked vs unchecked — jaka jest różnica?

Tagi
#exceptions#checked#runtimeexception
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Checked exceptions muszą być obsłużone lub zadeklarowane w sygnaturze (dziedziczą po `Exception`, ale nie po `RuntimeException`). Unchecked (`RuntimeException`) nie wymagają tego i zwykle oznaczają błąd programistyczny lub niepoprawny stan.

Odpowiedź zaawansowana

Głębiej

Checked wyjątki są częścią kontraktu metody: wywołujący musi je obsłużyć (try/catch) albo zadeklarować (throws). Unchecked nie są wymuszane przez kompilator.

Reguła kciuka:

  • Checked: sytuacje „odzyskiwalne”, które caller realnie może obsłużyć (np. IO) — choć w praktyce to bywa dyskusyjne.
  • Unchecked: błędy programistyczne / złamane inwarianty (NPE, IllegalArgumentException, IllegalStateException).

Praktyka

  • Unikaj „throws Exception” (ukrywa kontrakt).
  • Na granicach modułów opakuj wyjątki, dodając kontekst (custom exceptions).
  • Nie używaj wyjątków do normalnego sterowania logiką.

Typowe pułapki

  • Nadużywanie checked i generowanie boilerplate.
  • Połknięcie wyjątku (catch i nic).
  • Zamiana wszystkiego na RuntimeException bez kontekstu/logów.

Powiązane pytania

Java
Try-with-resources: czego wymaga i czemu jest przydatne?
#java#exceptions#resources
Kotlin
Wyjątki w korutynach: jak się propagują i kiedy użyć `CoroutineExceptionHandler`?
#kotlin#coroutines#exceptions