Bugungi kunda shaxsiy kompyuterlar yordamida hal qilinadigan turli xil vazifalar ulkan dasturlar to'plamining mavjudligi bilan ta'minlanadi. Dasturiy ta'minot bilan ishlashning qulayligi ko'p jihatdan favqulodda vaziyatlar bo'lmagan taqdirda ifodalangan ishonchliligiga bog'liq. Biroq, ko'plab dasturlar noo'rin paytlarda ishdan chiqadi. Nima uchun?
Istisno mexanizmi zamonaviy operatsion tizimlar nazorati ostida kompyuter dasturlari ishlashi paytida yuzaga keladigan maxsus, g'ayritabiiy yoki noto'g'ri vaziyatlarni kuzatib borish va boshqarish uchun ishlatiladi. Istisnolar apparat (protsessor tomonidan tashlangan) va dasturiy ta'minot (dasturning o'zi yoki ba'zi bir plagin tashqi komponent tomonidan tashlangan) bo'lishi mumkin.
Turidan qat'i nazar, istisno tutilishi va to'g'ri ishlashi mumkin. Tekshirilmagan istisnolar root runtime kutubxonasi ishlovchisiga yoki operatsion tizim tomonidan o'rnatilgan ishlov beruvchiga tegishli. Agar shunday bo'ladigan bo'lsa, dastur xabar yoki g'ayritabiiy tugatish oynasi bilan ishdan chiqadi (Windows-da). Agar operatsion tizim ishlov beruvchisi ishlamasa (masalan, u ataylab olib tashlangan bo'lsa), dastur "jimgina ishdan chiqadi". Shunday qilib, dasturlarni boshqarish mumkin bo'lmagan istisnolar tufayli ishdan chiqadi. Istisnolarning paydo bo'lishining sabablari boshqacha.
Aksariyat hollarda, dasturlarning aniq yoki aniq bajarilmaydigan xatolarini o'z ichiga olgan kodlari bajarilishi tufayli ishdan chiqadi. Favqulodda vaziyatlarning mumkin bo'lgan sabablari ro'yxati juda uzun. Bu ikkala suzuvchi nuqta raqamlari bo'yicha operatsiyalarning klassik xatolari (masalan, 0 ga bo'lish) va xotira bilan ishlashdagi xatolar (protsess manzili maydonidan tashqarida o'qish yoki yozish, himoyalangan sahifalarga kirish, faqat o'qish mumkin bo'lgan xotira maydoniga yozish)., cheksiz rekursiya tufayli to'lib toshgan stek va boshqalar. Bunday hollarda apparat istisnolari yoki operatsion tizim istisnolari tashlanadi.
Yashirin xatolarga turli xil kirish ma'lumotlarini filtrlash, ko'rsatgich qiymatlarini tekshirmaslik va boshqa ko'p holatlar kiradi. Bunday kamchiliklar faqat ayrim holatlarda istisno holatlarga olib keladi.
Amalga oshirishda xatoliklarni dastur tomonidan ishlatiladigan tashqi komponentlarda ham topish mumkin. Masalan, kerakli funktsiyalarni yoki qo'shimcha modullarni ta'minlaydigan dinamik kutubxonalarda. Jarayonning manzil maydoniga bevosita o'rnatilgan dastur kodi (masalan, ba'zi API funktsiyalarini ushlab qolish uchun) dasturning ishdan chiqishiga olib kelishi mumkin.
Ko'pgina komponentlar va kutubxonalar (masalan, Windows-dagi ADO) dasturiy istisno mexanizmidan xatolar haqida xabar berishning ustuvor yo'nalishi sifatida foydalanadi. Ushbu turdagi ilova tomonidan istisnolarning yo'qligi yoki to'liq bajarilmasligi, umuman zararsiz holatlarda ham (masalan, ma'lumotlar bazasiga ulanishni yo'qotish) uning ishdan chiqishiga olib kelishi mumkin.