Кіріспе
Бағдарламалау тілінің ерекше жағдайлар үшін конструкциясы
Есептеу техникасы және компьютерлік бағдарламалауда, ерекше жағдайларды өңдеу – бағдарлама орындалып жатқандағы қалыптан тыс немесе ерекше жағдайлардың туындауына жауап беру процесі. Әдетте, ерекше жағдай орындалудың қалыпты бағытын бұзады және алдын ала тіркелген ерекше жағдайларды басқарушыны іске қосады; мұның қалай жасалатыны аппараттық немесе бағдарламалық ерекше жағдай екендігіне және бағдарламалық ерекше жағдайдың қалай жүзеге асырылғанына байланысты. Ерекше жағдайлар компьютерлік жүйенің әртүрлі деңгейлерімен анықталады, ал әдеттегі деңгейлер – процессормен (CPU) анықталатын үзілістер, операциялық жүйемен (ОЖ) анықталатын сигналдар, бағдарламалау тілімен анықталатын ерекше жағдайлар. Әр деңгей ерекше жағдайларды өңдеудің әртүрлі әдістерін қажет етеді, бірақ олар өзара байланысты болуы мүмкін, мысалы, процессордың үзілісі операциялық жүйенің сигналына айналуы мүмкін. Кейбір ерекше жағдайлар, әсіресе аппараттық ерекше жағдайлар, соншалықты нәзік өңделуі мүмкін, осылайша орындалу үзілген жерден қайта жалғастырылуы мүмкін.
In computing and computer programming, exception handling is the process of responding to the occurrence of exceptions – anomalous or exceptional conditions requiring special processing – during the execution of a program. In general, an exception breaks the normal flow of execution and executes a pre registered exception handler; the details of how this is done depend on whether it is a hardware or software exception and how the software exception is implemented. Exceptions are defined by different layers of a computer system, and the typical layers are CPU defined interrupts, operating system (OS) defined signals, programming language defined exceptions. Each layer requires different ways of exception handling although they may be interrelated, e. g. a CPU interrupt could be turned into an OS signal. Some exceptions, especially hardware ones, may be handled so gracefully that execution can resume where it was interrupted.
Анықтама
Ерекшеліктің анықтамасы әрбір процедураның алғы шарты бар екендігіне негізделген, ол процедураның «қалыпты» аяқталуына жағдай жасайтын жағдайлар жиынтығы. Ерекшеліктерді өңдеу механизмі процедураға осы алғы шарт бұзылғанда, қолжетімсіз ресурс болғанда (мысалы, файлдың жоғалғаны, желілік дискіде қате немесе жад жетіспеушілігі) немесе реттілік ерекше өңдеуді қажет ететін қалыпты жағдайды анықтағанда ерекшелік тудыруға мүмкіндік береді, мысалы, назар аудару, файлдың соңы. Әлеуметтік қысым ерекшеліктердің қолданылу аясына және ерекшеліктерді өңдеу механизмдерін пайдалануға маңызды ықпал етеді, яғни «негізгі кітапханаларда кездесетін пайдалану мысалдары, техникалық кітаптардағы, журналдардағы және онлайн талқылау форумдарындағы код мысалдары, сондай-ақ ұйымның код стандарттары». Ерекшеліктерді өңдеу жартылай болжамды мәселені шешеді, себебі механизм қалыпты қайтару мәндерін қателі мәндерден ажыратады. C сияқты ерекшеліктерді өңдеуге кіріктірілмеген тілдерде, процедуралар қатені басқа тәсілмен көрсетуі керек, мысалы, кең таралған қайтару коды және errno үлгісі арқылы. «Ерекшелік» термині «қателік» терминіне қарағанда артық, өйткені ол бірдеңенің дұрыс емес екенін білдірмейді – бір процедура немесе бағдарламашы қате деп санаған жағдай, екіншісі үшін олай болмауы мүмкін. Шындығында, ерекшелік тудыру бағдарламада қалыпты және жиі кездесетін жағдай болуы мүмкін. Мысалы, ассоциативтік массивтің іздеу функциясы кілтке сәйкес мән болмаса, ерекшелік тудырады делік. Контекстке байланысты, бұл «кілт жоқ» ерекшелігі сәтті іздеуден гөрі әлдеқайда жиі кездесуі мүмкін.
Тарих
Бірінші аппараттық ерекшеліктерді өңдеу 1951 жылғы UNIVAC I компьютерінде табылды. Арифметикалық мәнінің шегінен асуы 0 мекенжайындағы екі нұсқауды іске қосты, олар басқаруды беруге немесе нәтижені түзетуге мүмкіндік берді. Бағдарламалық ерекшеліктерді өңдеу 1960 және 1970 жылдары дамыды. Ерекшеліктерді өңдеу кейіннен 1980 жылдардан бастап көптеген бағдарламалау тілдерімен кеңінен қабылданып, қолданысқа енді.
Жабдықтарға қатысты ерекшеліктер
Жабдыққа қатысты ерекшеліктің нақты мағынасы бойынша толық келісім жоқ. Іске асыру тұрғысынан қарағанда, ол үзілістен ешқандай айырмасы жоқ: процессор ағымдағы бағдарламаны орындауды тоқтатады, сол ерекшелік немесе үзіліс жағдайы үшін үзіліс векторы кестесінен тиісті өңдеушіні іздейді, жүйенің күйін сақтайды және басқаруды ауыстырады.