Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP / lectures / 6_oop.ppt
Скачиваний:
53
Добавлен:
03.03.2016
Размер:
320 Кб
Скачать

int main() { f2(); return 0;

}

Пример. Обработка математических

исключений с иерархии классов.

class Matherror { };

class Overflow: public Matherror { }; class Zerodivide: public Matherror { };

class Underflow: public Matherror{};

int formula(int x, int y) {

if (x>2000000 || x<-2000000) throw Overflow();

if (y==0) throw Zerodivide(); return x*x/y;

}

void f2() {

try {formula(3000000,0);}

catch (Overflow) {cerr<<"Переполнение\n";} catch(Matherror) {

cerr<<"Ошибка математической операции\n";

}

}

int main() {

f2(); return 0;

}

Используя иерархическое упорядочивание особых ситуаций, можно:

1)разработать программу с ясной структурой;

2)избежать неполноты при перечислении в проверяемом блоке всех особые ситуаций;

3)при изменении семейства особых ситуаций можно избежать изменений в тех частях программы, которые обрабатывают эту особую ситуацию.

Особые ситуации могут быть членами нескольких групп.

Пример. Перехват файловых ошибок в сети.

class network_err {}; class file_system_err{};

class network_file_err: public network_err, public file_system_err {};

void network_file()

{

/*операторы*/

throw network_file_err();

}

void f3() {

try { /*операторы*/ network_file();

}

catch (network_err) { cerr<<"Ошибка сети\n";

}

}

void f4() {

try { /*операторы*/ network_file();

}

catch (file_system_err) { cerr<<"Ошибка в файловой системе\n"; }

}

int main() { f3(); f4();

return 0;

}

Соседние файлы в папке lectures