Koja je razlika između izuzetaka u Kotlinu i Javi?
sobes.tech АИ
Одговор од АИ
Основна разлика у обради проверених (checked) изузетака.
У Јави постоје два типа изузетака:
- Проверени (Checked Exception): захтевају јасну обраду у блоку
try-catchили декларацију у сигнатури метода са кључном речјуthrows. Примери:IOException,FileNotFoundException. - Непроверени (Unchecked Exception): не захтевају јасну обраду. Примери:
RuntimeExceptionи његове подкласе,Error.
У Kotlin-у нема проверених изузетака. Све изузетке у Kotlin-у су у суштини непроверени. Ово олакшава код, јер није потребно користити try-catch или throws за рутинске операције које могу изазвати изузетак.
Пример у Јави:
// Java
public class FileRead {
public void readFile() throws IOException { // Обавезно декларација
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}
}
Пример у Kotlin-у:
// Kotlin
import java.io.File
fun readFile() { // Не треба декларација throws
File("file.txt").forEachLine {
println(it)
}
}
Иако нема проверених изузетака, Kotlin и даље може да их баци и обради (као што су они које бацају Java библиотеке), користећи блокове try-catch-finally. Ово се ради ради компатибилности са постојећим Java кодом.
// Kotlin
import java.io.IOException
fun readFileSafe() {
try {
readFile() // Позив функције која може бацити IOException
} catch (e: IOException) {
println("Грешка при читању фајла: ${e.message}")
} finally {
println("Завршена операција са фајлом.")
}
}
Резиме: Kotlin олакшава развој елиминисањем потребе за обавезним руковањем проверених изузетака, више се ослањајући на изузетке у време извршавања и стандардне механизме за обраду грешака тамо где је то потребно.