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дан мерос олиш орқали.