Како користити Три Цатцх изјаве у Ц

Kako Koristiti Tri Catch Izjave U C



Речи „покушај“ и „ухвати“ описују шта треба учинити када програм наиђе на изузетак због проблема са кодом или подацима. Изузеци се обрађују у а покушати блок кода. Цатцх блокови се користе за проналажење и обраду изузетака из блокова покушаја. Многи програмски језици, укључујући Питхон, Ц++ и ЈаваСцрипт, укључују покушај да ухватиш изјаве.

Овај чланак демонстрира шта је наредба три-цатцх и како се имплементира користећи пример у Ц програмирању.

Шта је изјава Три Цатцх?

Тхе покушати израз дефинише колекцију исказа који би могли створити изузетак. Када се догоди одређена врста изузетка, блок цатцх је место где се шаље изузетак. Компајлер ће или послати обавештење о грешци или ће изузетак наставити да путује нагоре по стеку позива све док се не адресира ако блок три/цатцх не успе да га обради.







Општа синтакса покушај да ухватиш изјава је дата као:



покушати {
/*
Убаците неки код који ће вероватно генерисати грешке
*/
}
улов {
/*
Напишите код за руковање генерисаним грешкама.
*/
}

Шта је изјава три-цатцх у Ц?

Ц не подржава руковање изузетцима и нема уграђени механизам за то. Међутим, ово можете донекле симулирати користећи сетјмп и лонгјмп позива. Без начина да се ослободи меморија када се стек посети, механизми за руковање изузетцима су неефикасни и несигурни, а Ц нема сакупљач смећа. Да бисмо ослободили РАМ, вероватно бисмо морали да интегришемо и менаџере контекста.



Сада, док правимо побољшања кода, постепено ћемо конструисати решење. Лонгјмп ​​и сетјмп су две Ц функције које можемо да обезбедимо заглавном датотеком сетјмп.х које ћемо користити. Функција сетјмп прихвата променљиве типа јмп_буф и враћа 0 када се директно позове. Када се иста променљива јмп_буф користи за позивање лонгјмп ​​са две променљиве, функција сетјмп враћа вредност која одговара вредности другог аргумента лонгјмп.





Пример горње имплементације је дат као:

#инцлуде <стдио.х>
#инцлуде <сетјмп.х>
#дефине ТРИ до { јмп_буф буф_стате; иф ( !сетјмп(буф_стате)) {
#дефине ЦАТЦХ } елсе {
#дефине ЕНДТРИ }} вхиле(0)
#дефине ТХРОВ лонгјмп(буф_стате, 1)
инт маин ( )
{
ПОКУШАТИ {
принтф ( „Пробајте тестирање изјава ' ) ;
ТХРОВ;
принтф ( „Изјава не би требало да се појави, пошто је блок ТХРОВ већ избацио изузетак ' ) ;
}
УЛОВ {
принтф ( „Имам изузетак ' ) ;
}
ЕНДТРИ;
повратак 0 ;
}

У горњем Ц програму, ЕНДТРИ функција се користи за обезбеђивање затварајућег дела блока до-вхиле.



Закључак

Ако програм наиђе на изузетак због грешке у подацима или кодирању док је покренут, „ покушати ' и ' улов ” опишите како се њиме управља. У а покушати блок кода, изузеци се јављају док а улов блок је одакле грешке покушати блокови се налазе и њима се рукује. Многи програмски језици подржавају покушај да ухватиш блокира, али Ц не. Овај водич је описао метод за коришћење наредби три-цатцх у Ц програмирању.