) {} 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 using namespace std; int mainO try { throw “main”; } catch(const char* msg) { co


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