on #inc1ude #includ
Автор admin
Понедельник, 4 мая 2009 11:32
on #inc1ude #include using namespace std; // Классы исключений: class A {}; class В {}; // Обработчик terminateO void my_thandler() { cout « “terminate called\n”; exit(O); 48 Глава 1 • Обработка исключений } // Обработчики unexpected) void my_uhandlerl() { throw A(): } void my_uhandler2() { throw; } // Если включить эту команду throw в f или g. // компилятор распознает нарушение и сообщит об ошибке. // поэтому мы выделяем ее в отдельную функцию, void t() { throw ВО; } void f() throw(A) { t(): } void g() throw(A. bad_exception) { t(); } int mainO { set_terminate(my_thandler); set_unexpected(my_uhandlerl); try { f(): } catch (A&) { cout « “caught an A from f\n”: } set_unexpected(my_uhand1er2): try { g(): } catch (bad_exception&) { cout « “caught a bad_exception from g\n”; } try { f(): } catch (…) { cout « “This will never print\n”: } } ///:- Обработчик my_uhandler() запускает допустимое исключение (А), поэтому выполнение успешно продолжается в первой секции catch. Обработчик my_uhandler2() запускает недопустимое исключение (В), но в спецификации д() присутствует класс bad_exception
Комментарии закрыты.
Последние комментарии