-
Notifications
You must be signed in to change notification settings - Fork 1
8.Обработка исключительных ситуаций в С . Пространства имен.
Главный недостаток структурного программирования – если на каком-то нижнем уровне возникает ошибка, её необходимо наверх наверх наверх где её обработают, спустя N уровней абстракции. Возникает идея передавать ошибку СРАЗУ туда, где её можно обработать. Реализация совершенно разная в зависимости от языка.
{
A *pobj = new A;
pobj->f();
delete pobj;
}
Страх и ужас – в Ф могла выделиться память, а потом произойти исключение, и управление передаётся выше. Остаётся и память внутри ф(), и память под объект А.
try
{
}
catch (<тип> & <идентификатор>)
{
}
Блок трай – под контролем. Если возникает исключительная ситуация НА ЛЮБОМ УРОВНЕ, то управление передаётся в обработчик кетч. Если обработать её кетч не может – то исключение передаётся ещё выше. Возникает слоёный пирог из обработчиков исключений. Вызов исключения происходит с помощью
if (целое) throw тип (...);
Создаётся иерархия «объектов ошибок». Есть базовое понятие ошибки, остальные классы – производные от этого базового класса ошибки.