lk_oop-c_8-09.ppt
- Количество слайдов: 10
Лекция № 8 по дисциплине «Объектно-ориентированное программирование» на тему: Исключения
Понятие исключения Исключение - это аварийное состояние, которое возникает в программе во время ее выполнения. Исключение - это объект, описывающий исключительную ситуацию. Когда возникает исключение, система генерирует объект, представляющий собой это исключение. Объект анализируется некоторой функцией.
Управление исключениями Оператор или группа операторов, которые могут вызвать исключение, помещаются в блок try, а код обработки этого исключения располагается в блоке catch. Если все проходит нормально, весь код внутри блока try выполняется, а блок catch пропускается Программный блок catch перехватывает исключение
Как создать исключение Исключительная ситуация создается ( «выбрасывается исключение» ) оператором throw значение; где значение идентифицирует возникшее исключение и может быть любого типа. Пример. if (y= =0) throw (“Деление на ноль”); z=x/y;
Пример создания и обработки исключения try { if (b= =0) throw 0; double d=a/b; cout << d; } catch(int) { cout << (“Деление на ноль”);
Исключения, возбуждаемые внутри функций Блок try реагирует на все исключения, возбуждаемые внутри функций, вызываемых из блока try. Пример. double fun (double a, double b) { if (b) return a/b ; else throw 0; } void fun 2 () { try { double d= fun (5, 0); cout << d; } catch (int) { cout << (“Деление на ноль”); } }
Обработка разнотипных исключений Пример. void main() { double x=8. 0, y; try { if (x= =0) throw 1; if (x<0) throw “abc”; y=sqrt(1/x); } catch (int) { cout << (“Деление на ноль”); } catch (char *) { cout << (“Отрицательное число под корнем”); } }
Обработка однотипных исключений Пример. try { if (x= =0) throw 1; if (x<0) throw 2; y=sqrt(1/x); } catch (int ex) { switch(ex) { case 1: cout << (“Деление на ноль”); break; case 2: cout << (“Отрицательное число под корнем”); } }
Повторная обработка исключений Для повторного возбуждения исключения используется оператор throw без параметра. Пример. try { if (x= =0) throw 1; y=1/x; } catch (int mes) { if (mes= =1) cout << (“Деление на ноль”); throw; } } catch (int) { cout << (“Деление на ноль!”); }
Для функции можно объявить типы исключений, которые она может выбросить. double fun (double a, double b) throw(int, bool); Пустой список говорит о том, что функция не должна выбрасывать исключений. double fun (double a, double b) throw(); Если в конструкторе выброшено исключение, объект не считается созданным.
lk_oop-c_8-09.ppt