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


Полезное:

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


Категории:

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






Код и требует его нового тестирования. Представьте себе, например, что





Добавлено исключение в стандартную библиотеку. Тогда модули, в которых

Должны обрабатываться все исключения, должны быть модифицированы и

Перекомпилированы. Но для больших библиотек это неприемлемо, поскольку

Исходный код библиотеки или некоторой ее части может оказаться

Недоступным.

Использование наследования позволяет вводить исключения,

принадлежащие различным группам. Например:

class network_file_err: public network_err, public file_system_err {

//.....

};

Исключение network_file_err может быть отловлено как функциями,

работающими с сетевыми исключениями:

void f() {

try {

//.....

}

catch(network_err) {

//.....

}

}

так и функциями, обрабатывающими исключения файловой системы:

void g() {

try {

//.....

}

catch(file_system_err) {

//.....

}

}

Это важно, так как сервис (например, сетевой) может быть прозрачен

Настолько, что программист, пишущий g() даже не будет подозревать о

Существовании сети.

Заметим, что при организации иерархии нет необходимости иметь общий

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

Всех исключений обработчиком по умолчанию. Однако если используется

Общий базовый класс для всех исключительных ситуаций, то необходимо

Сделать его пустым, за исключением виртуального деструктора, и строго

Придерживаться принципов наследования.

РАСПРЕДЕЛЕНИЕ РЕСУРСОВ ПРИ ИСПОЛЬЗОВАНИИ ИСКЛЮЧЕНИЙ

Когда требуется использовать некоторый ресурс, например, динамически

Распределить память или получить доступ к файлу, то важно после захвата и

Использования этого ресурса его освободить. Обычная ситуация такова, что

Ресурсы распределяются в начале работы некоторой функции и освобождаются

перед ее завершением:

void use_file(const char* filename) {

FILE* f = fopen(filename, “w”);

// используем f







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



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