наличии нескольких заполненных

Автор admin Суббота, 2 мая 2009 11:32

наличии нескольких заполненных буферов jmp_buf можно легко перемещаться между разными точками программы. Отличие локальной версии команды перехода по метке (goto) от нелокальной версии состоит в том, что функции setjmp()/longjmp() позволяют вернуться в любую заранее определенную позицию, расположенную выше в стеке (для которой была вызвана функция setjmpO). 28 Глава 1 • Обработка исключений Но в С++ возникает проблема: функция longjmp() не думает об объектах; в частности, она не вызывает деструкторы при выходе из области видимости1. Вызовы деструкторов абсолютно необходимы, поэтому такое решение не подходит для С++. Более того, в стандарте С++ сказано, что безусловный вход в область видимости по команде goto (в обход вызова конструкторов) или выход из области видимости с помощью функции longjmpO при наличии деструктора у объекта в стеке приводит к непредсказуемым последствиям. Запуск исключений Если в программе возникла исключительная ситуация (то есть в текущем контексте не хватает информации для принятия решения о том, как действовать дальше), информацию об ошибке можно передать во внешний, более общ


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