Xatolik va istisnolar
Dastur ishlashi mobaynida ichki yoki tashqi sabablarga ko’ra xatoliklar yuzaga kelishi
mumkin. Ichki sabablarga massivga murojat qilishda noto’g’ri indeksni ishlatish yoki obyekt
biriktirilmagan obyekt o’zgaruvchisini ishlatish kabilar kiradi. Tashqi sabablarga noto’g’ri
ma’lumot joylashgan fayl bilan ishlash yoki tarmoqdagi nosozliklar misol bo’la oladi. Agar
dastur ishi xatolik tufayli to’liq bajarilmay qolsa, dastur quyidagi amallarni bajarishi lozim:
-
xatosiz xolatga qaytish;
-
foydalanuvchi ishini saqlab dastur ishini to’g’ri tugatish.
Istisnolarni boshqarish mexanizmining maqsadi boshqaruvni xatolik paydo bo’lgan joydan
ushbu xatolik bilan ishlay oladigan dastur kodiga o’tkazishdan iborat. Istisnolar bilan ishlash
uchun paydo bo’lishi mumkin bo’lgan xatoliklarni ko’rib chiqish kerak. Bular:
1.
Foydalanuvchi kiritgan ma’luotning xatoligi – kiritilgan matn xatoligi, noto’g’ri URL
adresi, noto’g’ri son turi;
2.
Qurilma xatoliklari – printer o’chiqligi yoki uning ishlashidagi xatolik, server
ishlashidagi xatolik;
3.
Resurslar cheklanishi – disk to’lib qolishi;
4.
Dastur kodi xatoliklari – metodlarni noto’g’ri bajarilishi, mavjud bo’lmagan massiv
indeksini ishlatish.
Java dasturlash tilida agar metod o’z ishini bajarish imkoni bo’lmasa (xatoliklar sababli)
ushbu metod xatolik xaqida ma’lumotni o’z ichiga olgan obyektni xosil qiladi. Bundan tashqari,
metodni chaqirgan dastur kodining bajarilishi to’xtatiladi va istisnolarni boshqaruvchi mexanizm
dasturning istisnolarni boshqaruvchisini izlaydi. Istisnolarni boshqaruvchi istisno obyektini qabul
qilish va xatolik yuzaga kelganda bajariladigan amallarni belgilash imkonini beradi.
Java dasturlash tili obyektlarga ixtisoslashgan dasturlash tili bo’lganligi sababli istisnolar
obyekt ko’rinishida bo’ladi. Barcha xatolik va istisnolar
Throwable
klassidan kelib chiqgan
klasslar orqali xosil bo’ladi. Quyida istisnolar ierarxiya daraxtining yuqori qismi keltirilgan:
Istisno va xatolik klasslari ierarxiyasi
Throwable klassini ikkita,
Error
va
Exception
klasslari kengaytiradi. Ushbu klasslarni o’z
navbatida aniq bir xatoliklarni ifoda etuvchi klasslar kengaytiradi.
Throwable
Error
Exception
Error
klassi dasturning ichki xatoliklarini va resurslar cheklanishini belgilaydi. Ushbu
xatoliklarni dastur yordamida to’g’irlash mushkul bo’lib, bu xolatda foydalanuvchini xatolik
xaqida ogoxlantirib dastur ishi tugatiladi.
Dastur tuzilayotganda
Exception
klassi va uni kengaytiruvchi klasslarga asosi e’tiborni
qaratish kerak.
Exception
klassi o’z navbatida ikki turdagi klasslar tomonidan kengaytiriladi.
Birinchi turdagi klasslar bu
RuntimeException
klassi va uni kengaytiruvchi klasslar. Ikkinchi
turga boshqa klasslar kiradi.
Java dasturlash tilida
Error
va
RuntimeException
klasslaridan kelib chiqgan istisnolar
tekshirilmaydigan istisnolar
deyiladi. Barcha boshqa istisnolar
tekshiriladigan istisnolar
deyiladi. Tekshiriladigan istisnolarga dasturchi istisnolarni boshqaruvchi dastur kodini ta’minlab
berishi kerak.
Metod amal bajarishi mobaynida uddalay olmaydigan xolat yuzaga kelsa istisno obyekti
xosil qilinadi. Agar metod bajarilishida istisno xosil bo’lish xolati mavjud bo’lsa metod e’lon
qilish kodida ushbu xolat belgilanishi kerak. Istisno
throws
kalit so’zi bilan belgilanadi. Masalan,
agar dasturdagi
faylniOchish()
metodi xotirada joylashgan faylni ochishi kerak bo’lsa, metod
bajarilishi mobaynida ochilishi kerak bo’lgan fayl xotirada mavjud bo’lmasligi yoki mavjud fayl
ochilmasligi mumkin. Ushbu xolda
IOException
istisnosi xosil bo’ladi.
public void faylniOchish() throws IOExceptions
{
…
}
Istisnoni atayin xosil qilish xam mumkin. Istisno
throw
kalit so’zi bilan xosil qilinadi.
Odatda bu dastur ishini tekshirish uchun amalga oshiriladi. Masalan,
IOException e = new IOException();
throw e;
Do'stlaringiz bilan baham: |