Sobes.tech
Junior — Middle

Czym różni się obsługa błędów w Java i Kotlin, oraz jak są realizowane wyjątki w każdym z tych języków?

sobes.tech AI

Odpowiedź od AI

W Java i Kotlin obsługa błędów opiera się na wyjątkach, ale istnieją ważne różnice:

  • Java rozróżnia wyjątki checked (sprawdzane) i unchecked (nie sprawdzane). Wyjątki checked muszą być obsłużone (try-catch) lub zadeklarowane w sygnaturze metody (throws). To zmusza programistę do jawnego zajmowania się możliwymi błędami.

  • Kotlin nie ma wyjątków checked. Wszystkie wyjątki są uważane za unchecked, a kompilator nie wymaga ich jawnej obsługi ani deklaracji. To upraszcza kod, ale wymaga ostrożności przy obsłudze błędów.

Implementacja wyjątków:

  • W Java, wyjątki dziedziczą od Throwable, najczęściej od Exception lub RuntimeException.

  • W Kotlin, wyjątki również dziedziczą od Throwable. Można tworzyć własne klasy wyjątków, tak jak w Java.

Przykład obsługi wyjątku w Java:

try {
    // kod, który może wyrzucić wyjątek
} catch (IOException e) {
    // obsługa
}

W Kotlin:

try {
    // kod
} catch (e: IOException) {
    // obsługa
}

Ale w Kotlin nie trzeba deklarować throws w sygnaturze funkcji.