Sobes.tech
Junior

Чӣ гуна бояд истисноҳоро дар Kotlin идора кард?

sobes.tech AI

Ҷавоб аз AI

Дар Kotlin барои кор бо истисноҳо блокҳои try, catch ва finally истифода мешаванд.

fun divide(a: Int, b: Int): Int {
    try {
        // Коде, ки эҳтимолан хатарнок аст
        return a / b
    } catch (e: ArithmeticException) {
        // Ҳал кардани истиснои махсус
        println("Хатогӣ: тақсим ба сифр!")
        return 0
    } catch (e: Exception) {
        // Ҳал кардани истисноҳои умумӣ
        println("Хатое, ки маълум нест: ${e.message}")
        throw e // Агар лозим бошад, истисноро дубора партофтан
    } finally {
        // Коде, ки дар ҳар ҳол иҷро мешавад
        println("Тозакунии захираҳо ё дигар амалҳои охирин")
    }
}
  • Блоки try кодеро дорад, ки метавонад истисно барорад.
  • Блоки catch барои фатҳ ва коркарди истисноҳо истифода мешавад. Мумкин аст чанд catch барои намудҳои гуногуни истисноҳо истифода шавад. Навъҳои истисноҳо дар тартиби эълон карданашон гирифта мешаванд.
  • Блоки finally кодро дорад, ки ҳамеша иҷро мешавад, новобаста аз он ки истисно баромад ё на. Ин блок аксар вақт барои озод кардани захираҳо истифода мешавад.

Барои фаро бардоштани истисноҳо, калиди throw истифода мешавад:

fun validateAge(age: Int) {
    if (age < 0) {
        throw IllegalArgumentException("Син бояд манфӣ набошад")
    }
    // ...
}

Мумкин аст, ки аз класиҳои стандартии китобхона ё худсозии класиҳои махсус, ки аз Exception ё RuntimeException мерос мегиранд, истифода баред.