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



Pdf көрінісі
бет339/642
Дата30.03.2022
өлшемі3,66 Mb.
#29231
түріПрограмма
1   ...   335   336   337   338   339   340   341   342   ...   642
Байланысты:
pavlovskaia-jogargy-dengeili

void f1()

 

throw

 

(int,const

 

char*){/*

 

Функция тұлғасы */ }

void f2() throw (Oops*){ /* Функция тұлғасы */ }  

Мысалдағы



 f1 

функциясы тек 



int 

жəне 


const char*

 типтерінің алас-

тамаларын туындатуы керек.

Келесі 


f2

 функциясы тек 



Oops

 класына немесе одан туынды кластарға 

нұсқауыш типінің ерекше жағдайларын генерациялауы тиіс.

Егер 


throw

 түйінді сөзі көрсетілмесе, функция кез келген аластаманы 

генерациялауы мүмкін. Бос тізім функция аластамаларды тудырмайтынын 

білдіреді:




246

void f() throw (){

   // аластамаларды тудырмайтын функцияның тұлғасы

}

Аластамалар функцияның прототипіне енгізілмейді. Туынды класта вир-

туалды функцияны қайта анықтау кезінде базалық кластың соған сəйкес 

функциясындағы сияқты немесе оған қарағанда шектелген аластамалар тізімін 

беруге болады. 

Аластамалар тізімін көрсетудің ешбір салдары жоқ – функция қолданбауға 

уəде берген аластаманы тікелей немесе жанамалы түрде туындатуы мүмкін. 

Мұндай жағдай программаны орындау кезінде көрінеді де, 



unexpected 

стандартты функциясының шақырылуына əкеліп соғады, ол, өз кезегінде, 

келісім бойынша 

terminate

 функциясын шақырады. 



set_unexpected

 

функциясының көмегімен 



terminate

 функцияның орнына шақырылатын 

жəне көзделмеген аластама туындаған кездегі программаның əрекетін 

анықтайтын өзіндік функцияны тағайындауға болады. 



7.1-сурет.

 Аластаманы өңдеу алгоритмі




247

terminate

 функциясы келісім бойынша программаның орындалуын 

аяқтайтын 



Достарыңызбен бөлісу:
1   ...   335   336   337   338   339   340   341   342   ...   642




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

    Басты бет