ватывает исключение производно

Автор admin Воскресенье, 3 мая 2009 11:32

ватывает исключение производного класса: //: C01:Basexcpt.cpp // Иерархии исключений #incl ude using namespace std: class X { public: class Trouble {}; class Small : public Trouble {}; class Big : public Trouble {}; void f() { throw BigO; } }: int mainO { X x; Более того, в обработчиках исключений практически всегда следует задавать объекты исключений по константной ссылке (модификация исключения с повторным запуском применяется редко). Тем не менее, мы не настаиваем на этом. Поиск подходящего обработчика 33 try { x.f(): } catch(X::Troubles) { cout « “caught Trouble” « endl: // Скрывается предыдущим обработчиком: } catch(X::Small&) { cout « “caught Small Trouble” « endl: } catch(X::Big&) { cout « “caught Big Trouble” « endl: } } III:- В данном примере механизм обработки исключений всегда будет сопоставлять объект Trouble (и все, что является частным случаем Trouble по правилам открытого наследования1) с первым обработчиком. Таким образом, второй и третий обработчики вообще никогда не вызываются, поскольку все исключения достаются первому обработчику. Логичнее начать с обработчиков производ


Комментарии закрыты.