Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Объектов сопровождается вызовом для них деструкторов





ОСОБЕННОСТИ МЕХАНИЗМА ОБРАБОТКИ ИСКЛЮЧЕНИЙ В ЯЗЫКЕ С++

Вышеизложенное объясняет следующие особенности механизма

обработки исключений в языке С++ [1,2]:

Обрабатываются только исключительные ситуации, явно генерируемые

Некоторой функцией;

Поддерживается окончательная модель обработки. Это означает, что

После возникновения исключения невозможно продолжение выполнения

Программы с точки исключения;

Обработка исключения возможна только в функции, вызванной до его

Возникновения и еще не завершившейся. После выбрасывания исключения

void func2() {

int i=256;

// Когда поток управления достигает этого

// места, то, двигаясь вглубь стека,

// увидим локальную переменную i, фрейм

// функции func2(), адрес возврата в

// func1(), переменную k, фрейм функции

// func1(), адрес возврата в main(),

// переменную j

}

void func1() {

int k=128;

Func2();

}

void main(void){

int j=64;

Func1();

}

Вершина

Стека

Младшие адреса памяти

• Код программы

• Статические данные

• Куча

j=64

Адрес возврата в main()

k=128

Фрейм для func1()

i=256

Стек

Старшие адреса памяти

Адрес возврата в func1()

Фрейм для func2()

Управление должно быть передано некоторому программному блоку,

Принадлежащему функции, еще находящейся в стеке вызовов, путем его

Разматывания;

Если заявлено исключение, для которого нет обработчика в цепочке

Вызовов, программа будет завершена. В процессе поиска обработчика

Программный стек будет раскручен до конца;

5) Если обработчик «поймал» исключение, то обработка этого же исключения

Другими обработчиками, которые могут для него существовать, невозможна.

Другими словами, действует первый подходящий обработчик,

Встретившийся в процессе разматывания стека;

Если после заявления исключения управление передано catch-блоку, то вне

Зависимости от результата последующих действий исключение считается

Date: 2015-12-12; view: 377; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию