Անհատական համակարգիչների միջոցով այսօր լուծված առաջադրանքների բազմազանությունն ապահովվում է կիրառական ծրագրերի հսկայական փաթեթի առկայությամբ: Րագրաշարի հետ աշխատելու հարմարավետությունը մեծապես կախված է դրա հուսալիությունից, որն արտահայտվում է արտակարգ իրավիճակների բացակայության պայմաններում: Այնուամենայնիվ, շատ ծրագրեր խափանում են ամենաանպատեհ պահին: Ինչո՞ւ
Բացառության մեխանիզմը օգտագործվում է հատուկ, աննորմալ կամ սխալ իրավիճակները հետևելու և կարգավորելու համար, որոնք առաջանում են ժամանակակից գործավար համակարգերի վերահսկողության տակ գտնվող համակարգչային ծրագրերի շահագործման ընթացքում: Բացառությունները կարող են լինել ապարատային (պրոցեսորի կողմից նետված) և ծրագրային ապահովման (գցված բուն հավելվածի կողմից կամ մի քանի plug-in արտաքին բաղադրիչի կողմից):
Անկախ տեսակից, բացառությունը կարելի է բռնել և ճիշտ վարվել: Չբռնված բացառությունները գնում են արմատային գործարկման ժամանակի գրադարանի սպասարկողին կամ օպերացիոն համակարգի կողմից տեղադրված կարգավորիչին: Եթե դա տեղի ունենա, ծրագիրը խափանվում է հաղորդագրության կամ աննորմալ դադարեցման պատուհանի հետ (Windows- ում): Եթե օպերացիոն համակարգի կարգավարը չի աշխատել (օրինակ, այն դիտավորյալ հեռացվել է), ծրագիրը «լուռ խափանում է»: Այսպիսով, ծրագրերը խափանվում են բացառությունների պատճառով, որոնք հնարավոր չէ մշակել: Բացառությունների առաջացման պատճառները տարբեր են:
Դեպքերի ճնշող մեծամասնությունում ծրագրերը խափանվում են իրենց սեփական կոդերի կատարման պատճառով, որոնք պարունակում են բացահայտ կամ անուղղակի կատարման սխալներ: Արտակարգ իրավիճակների հնարավոր պատճառների ցանկը շատ երկար է: Դրանք երկուսն էլ լողացող կետի թվերի վրա գործողությունների դասական սխալներ են (օրինակ ՝ բաժանումը 0-ի վրա) և հիշողության հետ աշխատելու սխալներ (պրոցեսների հասցեի տարածքից դուրս կարդալ կամ գրել, պաշտպանված էջեր մուտք ունենալ, գրել միայն կարդալու հիշողության տարածք):, անսահման ռեկուրսիայի պատճառով հորդառատ կույտ և այլն: Այս դեպքերում նետվում են ապարատային բացառությունները կամ գործառնական համակարգի բացառությունները:
Անուղղակի սխալները ներառում են մուտքային տվյալների անբավարար զտման, ցուցիչի արժեքների վավերացման բացակայության և շատ ավելին տարբեր դեպքեր: Նման թերությունները բացառիկ իրավիճակների են հանգեցնում միայն որոշակի դեպքերում:
Կատարման սխալներ կարելի է գտնել նաև հավելվածի կողմից օգտագործվող արտաքին բաղադրիչներում: Օրինակ ՝ դինամիկ գրադարաններում, որոնք ապահովում են անհրաժեշտ ֆունկցիոնալությունը կամ լրացուցիչ մոդուլները: Programրագրի կոդը, որն անուղղակիորեն բեռնված է գործընթացի հասցեների տարածքում (օրինակ ՝ որոշակի API գործառույթներ կասեցնելու համար) կարող է նաև հանգեցնել ծրագրի խափանմանը:
Շատ բաղադրիչներ և գրադարաններ (օրինակ, ADO- ն Windows- ում) օգտագործում են ծրագրային բացառության մեխանիզմը `որպես սխալների հաղորդման գերակայություն: Բացառությունների բացակայությունը կամ թերի վարումը այս տեսակի կիրառման կողմից կարող է հանգեցնել դրա խափանմանը նույնիսկ լիովին անվնաս իրավիճակներում (օրինակ ՝ տվյալների շտեմարանին կապի կորուստ):