Wyjątki checked muszą być obsłużone lub zadeklarowane w throws (np. IOException) i zwykle oznaczają sytuacje możliwe do obsłużenia. Wyjątki unchecked dziedziczą po RuntimeException (np. NullPointerException) i najczęściej wskazują błąd programisty; ich obsługa jest opcjonalna.
Rozwinięcie krótkiej odpowiedzi — co zwykle ma znaczenie w praktyce:
Krótki przykład (szablon do wyjaśniania):
// Example: discuss trade-offs for "wyjątki-checked-vs-unchecked?"
function explain() {
// Start from the core idea:
// Wyjątki Checked (np. IOException) muszą być deklarowane lub łapane. Unchecked (RuntimeExce
}