пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

I семестр:
» Оп

Исключения в С++. Раскручивание стека.

try-блок — так называемый блок повторных попыток. В нем надо располагать код, который может привести к ошибке и аварийному закрытию программы;

throw генерирует исключение. То, что остановит работу try-блока и приведет к выполнению кода catch-блока. Тип исключения должен соответствовать, типу принимаемого аргумента catch-блока;

catch-блок — улавливающий блок, поймает то, что определил throw и выполнит свой код. Этот блок должен располагаться непосредственно под try-блоком. Никакой код не должен их разделять.

если в try-блоке исключение не генерировалось, catch-блок не сработает. Программа его обойдет.

Раскручивание стека – процесс освобождения памяти из-под локальных переменных и возврата управления вызывающей функции. Когда функция завершается, происходит естественное раскручивание стека. После ключевого слова throw выполняются следующие действия: 1. Создают копию параметра throw в виде статистического объекта, который существует до тех пор, пока исключение не обработано. 2. В поисках подходящего обработчика раскручивают стек, вызывая деструкторы локальных объектов, выходящих из областей действия. 3. Передают объект и управление первому же найденному обработчику, имеющему параметр, совместимый по типу с этим объектом. При раскручивании стека все обработчики на каждом уровне просматриваются последовательно, от внутреннего блока к внешнему, пока не обнаруживается подходящий обработчик.


19.01.2017; 21:55
хиты: 133
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь