enum {max = 32000}; // Вектордың максималды
// ұзындығы
Vector(int n) // Конструктор
{ if (n<0 || n>max) throw Size(); ... }
...
};
Vector
класын қолдану кезінде
Size
типті аластамаларды айқындап
атқаруды алдын ала қарастыруға болады.
try{
Vector *p = new Vector(i);
...
}
catch(Vector::Size){
... // Вектор өлшемінің қателігін өңдеу
}
Өңдеуіште қателік жəне қалпына келтіру туралы хабарламалар берудің
негізгі тəсілдерінің стандартты жиынтығы қолданылуы мүмкін. Аластаманы
анықтайтын кластың ішінде аластама туралы өңдеуішке берілетін ақпарат
сақталуы мүмкін. Бұл техниканың мəні – қателік туралы ақпаратты табылған
нүктесінен қатені өңдеуге қажетті мүмкіндіктері бар жерге дейін жеткізуді
қамтамасыз ету болып табылады.
Егер объектінің конструкторында аластама генерацияланатын болса,
онда автоматты түрде осы блокта ағымдағы сəтке дейін толығымен құрылған
объектілер үшін, сонымен қатар ағымдағы объектінің объектілер болып табы-
латын мəліметтер өрістері үшін жəне оның базалық кластары үшін деструктор-
248
лар шақырылады. Мысалы, егер аластама объектілердің жиымын құру кезінде
пайда болса, деструкторлар тек сəтті құрылған элементтер үшін шақырылады.
Егер объект динамикалық жадыда
new
операциясының көмегімен
құрылып, конструкторда аластама туындаған болса, онда объектіге бөлінген
жады дұрыс босатылады.
0> Достарыңызбен бөлісу: |