Sobes.tech
Middle

Kotlin va Java'dagi istisnolar o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Tekshiriladigan (checked) istisnalarni boshqarishda asosiy farq.

Java-da ikki turdagi istisnalar mavjud:

  • Tekshiriladigan (Checked Exception): try-catch blokida yoki metod imzosida throws kalit so'zi bilan aniq belgilanishi kerak. Misollar: IOException, FileNotFoundException.
  • Tekshirilmaydigan (Unchecked Exception): aniq belgilash shart emas. Misollar: RuntimeException va uning subklasslari, Error.

Kotlin-da tekshiriladigan istisnalar yo'q. Kotlin-da barcha istisnalar aslida tekshirilmaydi. Bu kodni soddalashtiradi, chunki try-catch yoki throws ni keng qo'llash shart emas, ayniqsa oddiy operatsiyalar uchun, ular istisno chiqarishi mumkin.

Java misoli:

// Java
public class FileRead {
    public void readFile() throws IOException { // Majburiy e'lon qilish
        BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

Kotlin misoli:

// Kotlin
import java.io.File

fun readFile() { // throws e'lon qilish shart emas
    File("file.txt").forEachLine {
        println(it)
    }
}

Tekshiriladigan istisnalar yo'qligiga qaramay, Kotlin hali ham istisnalarni (Java kutubxonalaridan chiqarilganlar kabi) try-catch-finally bloklari yordamida chiqarishi va boshqarishi mumkin. Bu mavjud Java kod bilan moslik uchun.

// Kotlin
import java.io.IOException

fun readFileSafe() {
    try {
        readFile() // IOException chiqarishi mumkin bo'lgan funksiya chaqiruvi
    } catch (e: IOException) {
        println("Faylni o'qishda xato: ${e.message}")
    } finally {
        println("Fayl operatsiyasi tugadi.")
    }
}

Xulosa: Kotlin rivojlanishni soddalashtiradi, tekshiriladigan istisnalarni majburan boshqarish shart emasligini olib tashlaydi, o'rniga ish vaqtida yuzaga keladigan istisnalar va standart xato boshqaruvchilarga ko'proq tayanadi.