Форум программистов, компьютерный форум, киберфорум
Наши страницы

Разъясните подробно, как работают Try-catch - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите доделать программу определения минимальной стоимости билета. http://www.cyberforum.ru/cpp-beginners/thread1116522.html
Определить минимальную стоимость билета для пассажира, следующего на заданное расстояние, стоимость билета с учетом выбранного вида вагона и поезда. Перемещение на скором поезде увеличивает...
C++ Дано двумерный массив целых чисел. Найти номера строк, в которых есть только один непарный элемент Вся программа должна быть сделана с помощью функций http://www.cyberforum.ru/cpp-beginners/thread1116497.html
Нахождение максимального элемента в массиве и его индекс (элемента) C++
Доброго времени суток. Вот исходный код поиска максимального элемента массива: #include"stdafx.h" #include"stdio.h" #include"stdlib.h" #include"conio.h" #include"math.h" int _tmain(int...
Удаление лишних символов C++
Имеется файл txt.txt в котором 50 000 строк, просто физически это обработать тяжело. Нужно удалить все эти знаки ( ) | и 0. (Левая скобка, правая скобка, прямая палка и ноль) Как выглядит часть...
C++ Номиналы российских рублей http://www.cyberforum.ru/cpp-beginners/thread1116446.html
Номиналы российских рублей могут принимать значения 1, 2, 5, 10, 50, 100, 500, 1000, 5000. Копейки представить как 0.01(1 копейка) 0.05(5 копеек), 0.1(10 копеек), 0.5(50 копеек). Создать класс Money...
C++ Программа вылетает при добавлении элемента Здравствуйте ув. форумчане. Есть у меня в программе массив первого и второго типа. При начальном создание (мы выбераем сами количество элементов) массивов деструктор срабатывает нормально. Но как... подробнее

Показать сообщение отдельно
DrOffset
7506 / 4502 / 1023
Регистрация: 30.01.2014
Сообщений: 7,362
11.03.2014, 19:32
Цитата Сообщение от Тамика Посмотреть сообщение
throw - что делает этот оператор? И почему catch() реагирует на throw? Как они связаны между собой?
throw создает временный объект, объект исключения, в специальной области памяти (особенности этой памяти не регламентированы, зависят от реализации), главное ее назначение - сохранить объект исключения пока будет раскручиваться стек.
После того как объект исключения сохранен, поток управления начинает работать в обратном направлении, пока не будет достигнуто начало блока try. В этом месте параметры определенных нами catch блоков начинаются сравниваться с сохраненным исключением, чтобы определить совпадение. Если совпадения не найдено, то поток управления продолжает разматывать стек до следующего блока try и т.д. Если блок try не был найден, то срабатывает глобальный обработчик, который вызывает std::terminate(). Если совпадение найдено, поток управления переходит к соответствующему catch блоку (обработчику исключений), который выполняется как обычно. В процессе раскрутки стека вызываются в порядке обратном созданию деструкторы всех автоматических объектов, которые были к тому моменту полностью созданы.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.