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


Полезное:

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


Категории:

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






Например, с ситуациями, возникающими в функциях математической





Библиотеки, можно связать семейство исключений MathError, включающее

Исключения Overflow, Underflow, Zerodivide и т.п.

Один из способов такой группировки состоит в определении

перечислимого типа данных MathError с соответствующими значениями:

enum MathError { Overflow, Underflow, Zerodivide, /*.....*/ };

//.....

try {

//.....

MathError m;

Throw m;

}

catch(MathError m) {

switch (m) {

case Overflow: /*..... */ break;

case Underflow: /*..... */ break;

case Zerodivide: /*..... */ break;

default: /*..... */;

}

}

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

механизмов наследования и виртуальных функций:

class MathError { };

class Overflow: public MathError { };

class Underflow: public MathError { };

class Zerodivide: public MathError { };

//.....

try {

//.....

}

catch(Overflow) {

// обработка Overflow и его потомков

}

catch(MathError) {

// обработка любого MathError, кроме Overflow и его потомков

}

Здесь все исключения, кроме Overflow, обрабатываются единообразно, как

MathError. Если требуется полиморфизм, то исключение в обработчик можно

Передавать по ссылке, либо использовать указатели.

Наградой за построение иерархии исключений является ее

Технологичность при сопровождении больших программ. Представьте себе,

Например, обработку всех исключений для стандартной математической

Библиотеки. Без группировки на основе наследования это приводит к длинным

последовательностям обработчиков:

try {

//.....

}

catch(Overflow) { /*..... */ }

catch(Underflow) { /*..... */ }

catch(Zerodivide) { /*..... */ }

//.....

Весьма часто реакция на разные исключения будет одинаковой. Такая

Ситуация вызывает раздражение из-за дублирования кода и содержит опасность

Пропуска некоторых исключений в последовательности обработчиков. Кроме

Того, добавление нового исключения требует модификации и перекомпиляции

Уже работающих программ, что чревато внесением ошибок в ранее отлаженный







Date: 2015-12-12; view: 373; Нарушение авторских прав



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