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 мерос мегиранд, истифода баред.