Қазіргі кезде дербес компьютерлердің көмегімен шешілетін әр түрлі міндеттер қолданбалы бағдарламалардың орасан зор жиынтығымен қамтамасыз етіледі. Бағдарламалық жасақтамамен жұмыс істеудің ыңғайлылығы көбінесе төтенше жағдайлар болмаған кезде көрсетілетін сенімділікке байланысты. Алайда көптеген бағдарламалар сәтсіздікке ұшырайды. Неліктен?
Ерекшелік механизмі қазіргі заманғы операциялық жүйелердің басқаруымен компьютерлік бағдарламалардың жұмысы кезінде туындайтын ерекше, қалыптан тыс немесе қате жағдайларды бақылау және өңдеу үшін қолданылады. Ерекшеліктер аппараттық (процессор лақтырған) және бағдарламалық жасақтама (қосымшаның өзі немесе кейбір қосылатын модульдің сыртқы компоненті шығарған) болуы мүмкін.
Түріне қарамастан, ерекшелікті ұстап, дұрыс өңдеуге болады. Ізделмеген ерекшеліктер түбірлік жұмыс уақыты кітапханасының өңдеушісіне немесе амалдық жүйеде орнатылған өңдеушіге жіберіледі. Егер бұл орын алса, бағдарлама хабарламамен немесе әдеттен тыс тоқтату терезесімен (Windows-та) бұзылады. Егер операциялық жүйенің өңдеушісі жұмыс істемесе (мысалы, оны әдейі алып тастады), бағдарлама «үнсіз бұзылады». Осылайша, бағдарламалар ерекше жағдайларға байланысты жұмыс істемей қалады. Ерекшеліктердің пайда болу себептері әр түрлі.
Жағдайлардың басым көпшілігінде бағдарламалар нақты немесе айқын емес орындалу қателіктері бар өздерінің кодтарын орындау салдарынан бұзылады. Төтенше жағдайлардың ықтимал себептерінің тізімі өте ұзақ. Бұл екеуі де өзгермелі нүктелік сандармен операциялардың классикалық қателіктері (мысалы, 0-ге бөлу) және жадымен жұмыс істеу қателері (процестің мекен-жайы кеңістігінен тыс оқу немесе жазу, қорғалған беттерге кіру, тек оқуға болатын жадқа жазу), шексіз рекурсияға байланысты толып жатқан стек және т.б. Бұл жағдайларда аппараттық ерекшеліктер немесе операциялық жүйенің ерекшеліктері жіберіледі.
Жасырын қателіктерге кіретін деректердің жеткіліксіз сүзілуінің әр түрлі жағдайлары, көрсеткіш мәндерінің расталмауы және тағы басқалары жатады. Мұндай кемшіліктер белгілі бір жағдайларда ғана ерекше жағдайларға алып келеді.
Іске асыру қателерін қосымша қолданатын сыртқы компоненттерден де табуға болады. Мысалы, қажетті функционалдылықты немесе қосымша модульдерді қамтамасыз ететін динамикалық кітапханаларда. Процестің адрестік кеңістігіне тікелей жүктелген бағдарлама коды (мысалы, кейбір API функцияларын ұстап алу үшін) сонымен қатар бағдарламаның бұзылуына әкелуі мүмкін.
Көптеген компоненттер мен кітапханалар (мысалы, Windows-тағы ADO) бағдарламалық ерекшелік механизмін қателер туралы есеп берудің басымдығы ретінде пайдаланады. Қосымшаның осы түріндегі ерекше жағдайлардың болмауы немесе толық еместігі мүлдем зиянсыз жағдайларда (мысалы, мәліметтер базасына қосылуды жоғалту) оның бұзылуына әкелуі мүмкін.