, поэтому исключение В заменяе

Автор admin Понедельник, 4 мая 2009 11:32

, поэтому исключение В заменяется объектом bad_exception, и выполнение успешно продолжается во второй секции catch. Поскольку спецификация f() не содержит объекта bad_exception, функция my_thandler() вызывается как обработчик завершения. Результат выполнения программы выглядит так: caught an A from f caught a bad_exception from g terminate called Спецификации исключений 49 Улучшим спецификации исключений? На первый взгляд может показаться, что существующий синтаксис спецификаций исключений не очень надежен, и что следующая запись должна означать, что функция не запускает никаких исключений: void f(): Если программист хочет указать, что функция может запускать произвольные исключения, ему следовало бы записать это объявление так: void f() throw(…); // Только не в С++ Наверное, такой синтаксис был бы более логичным, поскольку объявления функции стали бы более однозначными. К сожалению, при взгляде на код функции не всегда понятно, запускает ли она исключения, например, исключение может возникнуть из-за нехватки памяти. Что еще хуже, существующие функции, написанные до появления в языке обработки и


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