Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
umm_3690.pdf
Скачиваний:
24
Добавлен:
30.04.2015
Размер:
364.53 Кб
Скачать

Если ключевое слово throw не указано, функция может генерировать любое исключение. Пустой список означает, что функция не должна генерировать исключение:

void f ( ) throw ( ) {

}

Указание списка исключений ни к чему не обязывает– функция может породить исключение, которое она обещала не использовать. Эта ситуация обнаруживается во время исполнения программы и приводит к вызову стандартной функции unexpected, которая по умолчанию вызывает функциюterminate. Функция terminate по умолчанию вызывает функциюabort, которая завершает выполнение программы.

Иерархии исключений

Исключения могут быть как стандартного, так и определенного пользователем типа. Использование собственных классов исключений предпочтительнее применения стандартных типов данных. С помощью классов можно более гибко организовать передачу информации об исключении, легче дифференцировать обработку исключений, а кроме того, появляется возможность использовать иерархии классов.

Поскольку механизм управления исключениями позволяет создать обработчик для базового класса, родственные исключения можно представить в виде иерархии. Производя исключения от общего базового класса, можно в обработчике перехватывать ссылку или указатель на базовый класс, используя полиморфизм.

Существует ряд стандартных исключений, которые генерируются операциями или функциями С++. Все они являются производными от библиотечного класса exception, описанного в заголовочном файле <stdexcept>. Например, операция new при неудачном выделении памяти генерирует исключение bad_alloc.

Можно определять собственные исключения, производные от стандарт-

ных.

Задание

Добавьте в описание «функционального» калькулятора обработку исключительных ситуаций (недопустимый тип данных, операнд, являющийся делителем в операции деления, равен нулю, аргумент логарифма отрицателен или равен нулю и т. д.).

32

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]