Sobes.tech
Junior

Kotlin'da istisnolarni qanday boshqarish mumkin?

sobes.tech AI

AIdan javob

Kotlin'da istisnolarni boshqarish uchun try, catch va finally bloklari ishlatiladi.

fun divide(a: Int, b: Int): Int {
    try {
        // Potensial xavfli kod
        return a / b
    } catch (e: ArithmeticException) {
        // Maxsus istisnani boshqarish
        println("Xato: nolga bo'lish!")
        return 0
    } catch (e: Exception) {
        // Umumiy istisnalarni boshqarish
        println("Noma'lum xato yuz berdi: ${e.message}")
        throw e // Zarur bo'lsa, istisnani qayta yuborish
    } finally {
        // Har doim bajariladigan kod (istisno bo'lsa ham, bo'lmasa ham)
        println("Resurslarni tozalash yoki boshqa yakuniy harakatlar")
    }
}
  • try blokida istisno chiqarishi mumkin bo'lgan kod joylashgan.
  • catch bloki istisnalarni ushlash va boshqarish uchun ishlatiladi. Bir nechta catch bloklari turli xil istisno turlarini boshqarish uchun ishlatilishi mumkin. Istisno turlari e'lon qilish tartibida ushlanadi.
  • finally bloki har doim bajariladigan kodni o'z ichiga oladi, istisno chiqarilgan yoki chiqarilmagan bo'lsa ham. Bu blok ko'pincha resurslarni bo'shatish uchun ishlatiladi.

Java bilan solishtirganda, Kotlinda majburiy "checked" istisnolar mavjud emas. Kotlin'da barcha istisnolar "unchecked".

Istisnolarni chiqarish uchun throw kalit so'zidan foydalaniladi:

fun validateAge(age: Int) {
    if (age < 0) {
        throw IllegalArgumentException("Yosh manfiy bo'lishi mumkin emas")
    }
    // ...
}

Shuningdek, standart kutubxonadagi istisno sinflaridan foydalanish yoki Exception yoki RuntimeException dan meros olgan o'z sinflaringizni yaratish mumkin.