Istisno va xato oʻrtasidagi farq

Istisno va xato oʻrtasidagi farq
Istisno va xato oʻrtasidagi farq

Video: Istisno va xato oʻrtasidagi farq

Video: Istisno va xato oʻrtasidagi farq
Video: BOSHLIQ VA LIDER FARQI | KUCHLI MOTIVATSIYA | PRINCE EA 2024, Iyul
Anonim

Istisno va xato

Dastur ishlayotganda kutilmagan xatti-harakatlar yuzaga kelishi mumkin. Bu istisnolar yoki xatolar tufayli bo'lishi mumkin. Istisnolar oddiy dastur oqimini buzishi mumkin bo'lgan hodisalardir. Xatolar tuzatib bo'lmaydigan holatlardir. Istisnolar asosan ilovaning oʻzi bilan bogʻliq, xatolar esa dastur ishlayotgan tizim bilan bogʻliq.

Istisno nima?

Istisno - bu oddiy dastur oqimini buzishi mumkin bo'lgan hodisa. Istisno "istisno" dan keladi. Istisnoni tashlash - istisno ob'ektini yaratish va uni ish vaqti tizimiga topshirish jarayoni. Istisno ob'ekti istisno sodir bo'lgan usul bilan yaratiladi. Istisno ob'ektida istisno turi va tavsifi kabi foydali ma'lumotlar mavjud. Ish vaqti tizimi istisno ob'ektini qabul qilganda, u teskari tartibda (usullar chaqirilgan) o'tish orqali qo'ng'iroqlar to'plami ichida uni boshqarish uchun kimnidir topishga harakat qiladi. Qo'ng'iroqlar to'plami - bu istisno sodir bo'lgan usuldan oldin chaqirilgan usullarning tartiblangan ro'yxati. Ish vaqti tizimi, agar istisno ishlov beruvchisi bilan usul topsa, muvaffaqiyatli bo'ladi. Istisno ishlov beruvchisi - bu istisnoni rasmiy ravishda hal qila oladigan kod blokidir. Agar ish vaqti tizimi mos ishlov beruvchini topsa (ya'ni, istisno turi ishlov berilishi mumkin bo'lgan turga mos keladi), u istisno ob'ektini ishlov beruvchiga uzatadi. Bu istisnoni qo'lga olish deb ataladi. Biroq, istisnoni hal qilishning iloji bo'lmasa, dastur to'xtatiladi. Java-da istisnolar “Throwable sinf”dan meros bo'lib o'tadi. NullPointerException va ArrayIndexOutOfBoundsException Java-da ikkita keng tarqalgan istisno hisoblanadi.

Xato nima?

Xato tuzatib boʻlmaydigan holat hisoblanadi, masalan, dastur mavjud boʻlganidan kattaroq xotira hajmini talab qiladi. Ushbu xatolarni ish vaqtida hal qilib bo'lmaydi. Agar xato ro'y bersa, dastur to'xtatiladi. Java-da xatolar Throwable sinfidan meros bo'lib o'tadi. Xatolar odatda dasturchi (yoki dastur) ushlashga urinmasligi kerak bo'lgan jiddiy muammolarni anglatadi. Xatolar shunchaki g'ayritabiiy holatlar bo'lib, ular hech qachon normal sharoitlarda yuzaga kelishi kutilmaydi va shuning uchun hech qachon oldindan aytib bo'lmaydi. Masalan, OutOfMemoryError, StackOverflowError va ThreadDead shunday xatolardir. Usullarda hech qachon xatolar uchun ishlov beruvchilar boʻlmasligi kerak.

Istisno va xato oʻrtasidagi farq nima?

Xatolar ham, istisnolar ham dasturni bajarishda istalmagan holatlardir. Biroq, ular asosiy farqlarga ega. Istisnolarni dasturchi oldindan ko'rishi mumkin, xatoni oldindan ko'rish qiyin. Istisnolarni tekshirish yoki olib tashlash mumkin. Lekin xatolar har doim tekshirilmaydi. Istisnolar odatda dasturchi tomonidan yuzaga kelgan xatoni ko'rsatadi. Biroq, xatolar tizim xatosi yoki manbadan noto'g'ri foydalanish tufayli yuzaga keladi. Shuning uchun istisnolar dastur darajasida, xatolar esa tizim darajasida (faqat iloji bo'lsa) hal qilinishi kerak. Istisnoni ko'rib chiqqandan so'ng, sizga oddiy dastur oqimiga qaytishingiz kafolatlanadi. Ammo xatolik aniqlansa ham, dasturchi birinchi navbatda uni qanday hal qilishni bilmasligi mumkin. An'anaviy xatolarni qayta ishlashdan farqli o'laroq, istisnolar xatolarni qayta ishlash kodini oddiy koddan ajratish imkonini beradi.

Tavsiya: