Belgilangan istisno va bajarilish vaqti istisnosi

Istisnolar - bu oddiy dastur oqimini buzishi mumkin bo'lgan maxsus turdagi tadbirlar. Ismning istisnosi "favqulodda hodisa" dan kelib chiqadi. Istisno tashlash - bu istisno ob'ektini yaratish va uni ish vaqti tizimiga topshirish jarayoni. Ish vaqti tizimi istisno ob'ekti olganida, uni teskari tartibda (usullar deb atalgan) aylantirib, qo'ng'iroqlarni stack ichida boshqarish uchun kimdir topishga harakat qiladi. Ish vaqti istisnosiz ishlov beruvchi yordamida usul topsa muvaffaqiyatli bo'ladi. Istisno ishlovchisi - bu istisnoni rasmiy ravishda amalga oshiradigan kod blokidir. Agar ish vaqti tizimi tegishli ishlov beruvchini topsa, u istisno ob'ektni ishlov beruvchiga topshiradi. Bunga istisnolarni qo'lga olish deyiladi. Ammo, agar istisnoni hal qilib bo'lmasa, dastur tugaydi. Java-da istisnolar Throwable klassidan meros bo'lib o'tadi. Belgilangan istisnolar - bu kompilyator tomonidan qo'llaniladigan istisnolar. Ish vaqtidagi istisnolar - bu kompilyator tomonidan tekshirilmagan istisnolarning bir turi.

Tekshirilgan istisno nima?

Belgilangan istisnolar - bu java.lang.exception yoki uning pastki sinflari ob'ektlari (java.lang.RuntimeException va uning kichik sinflaridan tashqari). Belgilangan istisnolar kompilyatsiya vaqtida "tekshiriladi". Bu degani, dasturchi ushbu istisnolarni ushlashi yoki tashlab yuborishi kerak yoki aks holda kompilyatsiya shikoyat qilishi mumkin (kompilyator xatosi sabab). Shu sababli, tekshirilgan ko'plab istisnolar dasturchilarga juda yaxshi ma'lum. Masalan, IOException va uning kichik sinflari istisnolarni tekshiradi va dasturchi biron bir faylga kirish yoki o'zgartirish bilan shug'ullanadigan bo'lsa, kompilyator barcha mumkin bo'lgan IOExceptions dasturchi tomonidan g'amxo'rlik qilinayotganligini tekshiradi.

Runtime istisnosi nima?

Runtime istisnolari java.lang.RuntimeException va uning barcha kichik sinflaridan iborat. Nazariy jihatdan aytganda, ular tekshirilgan istisnolar bilan bir xil maqsadga xizmat qiladi va ularni tashlab yuborilishi yoki nazorat qilingan istisnolar kabi ishlov berishlari mumkin, ammo ularni qayta ishlash kompilyator tomonidan amalga oshirilmaydi. Shu sababli, ijro vaqtidagi istisnolar tekshirilmagan istisnolar oilasiga tegishli. NullPointerException, NumberFormatEception, ClassCastException va ArrayIndexOutOfBoundsException - Java-da keng tarqalgan ish vaqti istisnolari.

Belgilangan istisno va ijro vaqtining istisnosi o'rtasidagi farq nima?

Tekshirilgan istisnolar va ish vaqtidagi istisnolar ikkalasi ham dasturni bajarish paytida istalmagan holat bo'lsa ham, ularning farqlari bor. Belgilangan istisnolardan foydalanish kompilyator tomonidan amalga oshiriladi, ammo ish vaqti istisnolari mavjud emas. Shunday qilib, kodni tuzish uchun tekshirilgan istisnolar tashlanishi yoki ishlatilishi kerak, ammo ish vaqti istisnolariga nisbatan bunday talab yo'q. Shunday qilib, ish vaqtidagi istisnolar xatolar bilan birga tekshirilmagan istisnolar toifasiga kiradi.

Tekshirilgan istisnolardan tashqari, noqulaylik, dasturchi u qanday qilishni bilmasa ham, uni boshqarishi kerak. Shunday qilib, agar dasturchi asl nusxasini o'ramasdan yangi istisnoni tashlasa, asl istisnoga tegishli stack izi yo'qoladi. Bu erda ish vaqti istisnolari yordam beradi. Ish vaqtidagi barcha istisnolar bitta joyda bajarilishi mumkinligi sababli dasturchilar kamroq miqdordagi kod yozishlari mumkin. Boshqa tomondan, tekshirilgan istisnolarni qo'lga olish kerakligi sababli, dasturchi uchun hech qanday ajablanib bo'lmaydi. U qaysi usul bilan istisno qilinishi mumkinligini har doim biladi. Bunga zid ravishda, ish vaqtining turli xil istisnolari dasturchining ma'lumotisiz tashlanishi mumkin.