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("Resursларни тозалаш ёки бошқа якунловчи ҳаракатлар")
    }
}
  • try блоки истисно чиқариши мумкин бўлган кодни ўз ичига олади.
  • catch блоки истисноларни ёпиш ва ишлаш учун қўлланилади. Бир нечта catch блоклари турли турдаги истисноларни ишлаш учун қўлланиши мумкин. Турлар уларнинг эълон қилинган тартибида ёпилади.
  • finally блоки ҳар доим ишга тушадиган кодни ўз ичига олади, истисно чиқарилган ёки чиқарилмаган бўлса ҳам. Бу блок кўпинча ресурсларни озод қилиш учун қўлланилади.

Java билан муқоиса қилганда, Kotlinда мажбурий "checked" истиснолар мавжуд эмас. Барча истиснолар "unchecked".

Истисно чиқариш учун throw калит сўзи қўлланилади:

fun validateAge(age: Int) {
    if (age < 0) {
        throw IllegalArgumentException("Ёш манфий бўлиши мумкин эмас")
    }
    // ...
}

Шунингдек, стандарт китобхонанинг истисно синфларидан фойдаланиш ёки ўзингизнинг синфларингизни яратиш мумкин, Exception ёки RuntimeExceptionдан мерос олиш орқали.