) {} const char* whatO const {
Автор admin Понедельник, 4 мая 2009 11:32
) {} const char* whatO const { return msg; } }: Derived(int j) try : Base(j) { // Тело конструктора cout « “This won’t print” « endl; } catch (BaseExcept&) { throw DerivedExcept(“Base subobject threw”):: } }: int mainO { try { Derived d(3): } catch (Derived::DerivedExcept& d) { cout « d.whatO « endl; // “Base subobject threw” } } ///:~ Обратите внимание: список инициализаторов в конструкторе Derived следует после ключевого слова try, но перед телом конструктора. Возникшее исключение означает, что хранящийся объект не сконструирован, поэтому возвращаться к тому коду, где он создавался, бессмысленно. По этой причине возможен только один разумный вариант: запустить исключение в секции catch уровня функции. Стандартные исключения 43 Как показывает следующий пример, в С++ также допускается создание блоков try уровня функции для любых функций (впрочем, особенно полезной эту возможность не назовешь): //: C01:FunctionTryBlock.cpp {-bor} // Блоки try уровня функций // {RunByHand} (Не запускать автоматически) #include
Комментарии закрыты.
Последние комментарии