Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет219/465
Дата09.01.2023
өлшемі3,66 Mb.
#60709
түріПрограмма
1   ...   215   216   217   218   219   220   221   222   ...   465
Байланысты:
аибм сплюс

// функцияны шақырамыз
}
int main(){
try{
cout << "try-блокқа кіреміз" << endl; 
f2();
cout << "try-блоктан шығамыз" << endl;
}
catch(int i){
cout << "int өңдеуіші шақырылды, аластама - " 
<< i << endl; 
return -1;
}
catch(const char * p){
cout << "const char* өңдеуіші шақырылды, 
аластама - " << p << endl; 
return -1;
}
сatch(...){
cout << "Барлық аластамалардың өңдеуіші 
шақырылды" << endl; 
return -1;
}
return 0; // Барлығы сəтті орындалды
}
Программаның орындалу нəтижесі:
try-блокқа кіреміз
Hello!
Аластама генерациялаймыз
Bye!
const char * өңдеуіші шақырылды, аластама – Файл ашуда 
қате кетті
Аластаманың туындауынан кейін 
f1
функциясынан басқару 
main
функци-
ясында орналасқан өңдеуішке берілгендігіне қарамастан, жергілікті объектінің 
деструкторы шақырылғанына назар аударыңыздар. Мұнда «
try
-блоктан 
шығамыз» хабарламасы шығарылған жоқ. Программада файлмен жұмыс істеу 
үшін ағымдар қолданылды (олар туралы «Ағымдық кластар» бөлімінде, 283 б. 
жазылады).


245
Сонымен, аластамалар механизмі қателіктер туындаған кезде объектілерді 
дұрыс жоюға мүмкіндік береді. Сондықтан ресурстарды бөлу жəне босатуды 
кластар түрінде ұйымдастырған тиімді болып саналады, өйткені олардың 
конструкторы ресурсты бөледі, ал деструкторы – босатады. Мысал ретінде 
файлмен жұмыс істеуге арналған класты келтіруге болады. Класс конструк-
торы файлды ашады, ал деструкторы – жабады. Мұндайда қателік туындаған 
кезде файл дұрыс жабылып, ақпарат жойылмайтынына кепілдік берілетінін 
айтуға болады.
Жоғарыда көрсетілгендей, аластама стандартты немесе қолданушы 
анықтаған типте болуы мүмкін. Бұл типті ауқымды түрде анықтаудың қажеті 
жоқ, оның аластама туындаған нүктеде жəне аластаманы өңдеу нүктесінде 
белгілі болуы жеткілікті. Аластаманы бейнелейтін класты, онымен жұмыс 
істегенде осы аластама туындауы мүмкін басқа кластың ішінде сипаттауға бо-
лады. Осы кластың көшірме конструкторы 
public
болып жариялануы тиіс, 
өйткені оған кері жағдайда аластама туындағанда объектінің көшірмесін құру 
мүмкін болмай қалады (келісім бойынша құрылатын көшірме конструкторының 
спецификаторы 


Достарыңызбен бөлісу:
1   ...   215   216   217   218   219   220   221   222   ...   465




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет