try va catch — xatolarni ushlab, dasturning to’xtab qolishining oldini oladigan mexanizm. Har qanday dastur xato bilan uchrashadi: foydalanuvchi noto’g’ri ma’lumot kiritadi, fayl topilmaydi, nolga bo’lish sodir bo’ladi. Yaxshi dastur bunda “qulab tushmaydi”, balki xatoni ushlab, oqilona javob beradi. Bu — Kotlin qo’llanmasining yakuniy mavzusi.
try-catch —
tryblokiga xavfli kod,catchblokiga esa xato yuz berganda bajariladigan kod yoziladigan konstruksiya. U istisnoni ushlab, dasturni davom ettiradi.
try va catch tuzilishi
try blokiga xavfli kodni, catch blokiga esa javob kodini yozamiz:
fun main() {
try {
val natija = 10 / 0
println(natija)
} catch (e: ArithmeticException) {
println("Xato: nolga bo'lish mumkin emas")
}
println("Dastur davom etmoqda")
}
Xato: nolga bo'lish mumkin emas
Dastur davom etmoqda
Mana farqi: dastur qulamadi, xatoni ushlab, tushunarli xabar berdi va oxirgi qatorgacha ishlashda davom etdi. catch (e: ArithmeticException) — aniq xato turini ushladi.
Xato ma’lumotini olish
Ushlab olingan istisno obyekti xato haqida ma’lumot beradi. message xususiyati sababni qaytaradi:
fun main() {
try {
val son = "salom".toInt() // xato
println(son)
} catch (e: NumberFormatException) {
println("Xato yuz berdi: ${e.message}")
}
}
Xato yuz berdi: For input string: "salom"
"salom" ni songa aylantirib bo’lmagani uchun NumberFormatException yuz berdi. e.message esa aniq sababni ko’rsatdi.
try — ifoda sifatida
Kotlin’ning o’ziga xosligi: try ham qiymat qaytaradi. Uni to’g’ridan-to’g’ri o’zgaruvchiga berish mumkin:
fun main() {
val son = try {
"42".toInt()
} catch (e: Exception) {
0 // xato bo'lsa 0
}
println(son)
}
42
val son = try { ... } catch { ... } — try natijasini to’g’ridan-to’g’ri o’zgaruvchiga berdi. Bu Kotlin’ning ixcham va nafis xususiyati.
finally bloki
finally bloki xatodan qat’i nazar (bo’ladimi-yo’qmi) doim bajariladi:
| Blok | Qachon bajariladi |
|---|---|
try |
doim (xavfli kod) |
catch |
faqat xato yuz berganda |
finally |
har doim |
finally fayl yopish kabi “tozalash” ishlarini kafolatlaydi.
Xulosa
Bu bo’limda try-catch bilan xatoni ushlash, message bilan sababni olish, try ning ifoda sifatida qiymat qaytarishi va finally blokini ko’rib chiqdik. Xatolarni to’g’ri boshqarish — professional dasturchining belgisi.