Кіріспе

Бағдарламалау тілінің ерекше жағдайлар үшін конструкциясы

Есептеу техникасы және компьютерлік бағдарламалауда, ерекше жағдайларды өңдеу – бағдарлама орындалып жатқандағы қалыптан тыс немесе ерекше жағдайлардың туындауына жауап беру процесі. Әдетте, ерекше жағдай орындалудың қалыпты бағытын бұзады және алдын ала тіркелген ерекше жағдайларды басқарушыны іске қосады; мұның қалай жасалатыны аппараттық немесе бағдарламалық ерекше жағдай екендігіне және бағдарламалық ерекше жағдайдың қалай жүзеге асырылғанына байланысты. Ерекше жағдайлар компьютерлік жүйенің әртүрлі деңгейлерімен анықталады, ал әдеттегі деңгейлер – процессормен (CPU) анықталатын үзілістер, операциялық жүйемен (ОЖ) анықталатын сигналдар, бағдарламалау тілімен анықталатын ерекше жағдайлар. Әр деңгей ерекше жағдайларды өңдеудің әртүрлі әдістерін қажет етеді, бірақ олар өзара байланысты болуы мүмкін, мысалы, процессордың үзілісі операциялық жүйенің сигналына айналуы мүмкін. Кейбір ерекше жағдайлар, әсіресе аппараттық ерекше жағдайлар, соншалықты нәзік өңделуі мүмкін, осылайша орындалу үзілген жерден қайта жалғастырылуы мүмкін.

Анықтама

Ерекшеліктің анықтамасы әрбір процедураның алғы шарты бар екендігіне негізделген, ол процедураның «қалыпты» аяқталуына жағдай жасайтын жағдайлар жиынтығы. Ерекшеліктерді өңдеу механизмі процедураға осы алғы шарт бұзылғанда, қолжетімсіз ресурс болғанда (мысалы, файлдың жоғалғаны, желілік дискіде қате немесе жад жетіспеушілігі) немесе реттілік ерекше өңдеуді қажет ететін қалыпты жағдайды анықтағанда ерекшелік тудыруға мүмкіндік береді, мысалы, назар аудару, файлдың соңы. Әлеуметтік қысым ерекшеліктердің қолданылу аясына және ерекшеліктерді өңдеу механизмдерін пайдалануға маңызды ықпал етеді, яғни «негізгі кітапханаларда кездесетін пайдалану мысалдары, техникалық кітаптардағы, журналдардағы және онлайн талқылау форумдарындағы код мысалдары, сондай-ақ ұйымның код стандарттары». Ерекшеліктерді өңдеу жартылай болжамды мәселені шешеді, себебі механизм қалыпты қайтару мәндерін қателі мәндерден ажыратады. C сияқты ерекшеліктерді өңдеуге кіріктірілмеген тілдерде, процедуралар қатені басқа тәсілмен көрсетуі керек, мысалы, кең таралған қайтару коды және errno үлгісі арқылы. «Ерекшелік» термині «қателік» терминіне қарағанда артық, өйткені ол бірдеңенің дұрыс емес екенін білдірмейді – бір процедура немесе бағдарламашы қате деп санаған жағдай, екіншісі үшін олай болмауы мүмкін. Шындығында, ерекшелік тудыру бағдарламада қалыпты және жиі кездесетін жағдай болуы мүмкін. Мысалы, ассоциативтік массивтің іздеу функциясы кілтке сәйкес мән болмаса, ерекшелік тудырады делік. Контекстке байланысты, бұл «кілт жоқ» ерекшелігі сәтті іздеуден гөрі әлдеқайда жиі кездесуі мүмкін.

Тарих

Бірінші аппараттық ерекшеліктерді өңдеу 1951 жылғы UNIVAC I компьютерінде табылды. Арифметикалық мәнінің шегінен асуы 0 мекенжайындағы екі нұсқауды іске қосты, олар басқаруды беруге немесе нәтижені түзетуге мүмкіндік берді. Бағдарламалық ерекшеліктерді өңдеу 1960 және 1970 жылдары дамыды. Ерекшеліктерді өңдеу кейіннен 1980 жылдардан бастап көптеген бағдарламалау тілдерімен кеңінен қабылданып, қолданысқа енді.

Жабдықтарға қатысты ерекшеліктер

Жабдыққа қатысты ерекшеліктің нақты мағынасы бойынша толық келісім жоқ. Іске асыру тұрғысынан қарағанда, ол үзілістен ешқандай айырмасы жоқ: процессор ағымдағы бағдарламаны орындауды тоқтатады, сол ерекшелік немесе үзіліс жағдайы үшін үзіліс векторы кестесінен тиісті өңдеушіні іздейді, жүйенің күйін сақтайды және басқаруды ауыстырады.