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: Foydalanuvchi kiritgan ma’luotning xatoligi - kiritilgan matn xatoligi, noto’g’ri URL adresi, noto’g’ri son turi;
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 Throwabie 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.
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 fayiniochish() 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,