Реферат: Методы программирования в C++
}
Из описанных в программе обработчиков всегда срабатывает только один.
Идентификация того обработчика, который нужно вызвать, осуществляется по типу выброшенного значения. Остальные обработчики не вызываются. Можно перехватывать любые типы данных, включая и типы создаваемых пользователем классов. Фактически в качестве исключительных ситуаций часто используются именно типы классов.
throw выбрасывает исключения и осуществляет переход к обработчику. За этим ключевым словом в общем случае может следовать выражение, сводящееся к определенному типу. Это значение может рассматриваться как фактический параметр при вызове функции обработчика. Типом этого операнда определяем какой из обработчиков должен перехватить исключение.
Место, где написано слово throw, называется точкой выброса.
Ключевое слово throw без операнда применяется, когда заново выбрасывается то исключение, которое в данный момент обрабатывается. Этот вариант используется либо в catch-обработчике, либо в функции им вызываемом.
voidf1()
{ …
if (<условие>)
throw “ошибка”;
}
void f2()
{ …
if (<условие>)
{ x=3;
throw x;}
}
Когда выполняется throw
1) создается копия выброшенного объекта;
2) “разматывается” стек, вызывая деструкторы локальных объектов, выходящих из области действия;
3) передается управление ближайшему catch-обработчику, имеющему тип, совпадающий с типом выброшенного объекта. Копия объекта передается обработчику в качестве параметра.
Рассмотрим пример программы, которая иллюстрирует работу с графическими объектами. Здесь реализованы основные принципы объектно-ориентированного программирования на языке C++.
#include <graphics.h> // директива препроцессора для работы с графикой
#include <iostream.h> //директива препроцессора для ввода-вывода
#include <conio.h> //директива препроцессора для ввода одиночного символа
enumBoolean{false, true}; //логический тип
class Location
{protected:
intX;intY; //защищенные поля класса