Исключения в языке C++
В стандартной библиотеке C++ определены два заголовка, которые имеют отношение к обработке исключительных ситуаций, или исключений: <exception> и <stdexcept>. Исключения используются для сигнализации об ошибочных условиях. Рассмотрим эти заголовки подробнее. <exception>Заголовок <exception> определяет классы, типы и функции, которые связаны с обработкой исключений. Вот как выглядят определения классов. class exception { public: exception() throw(); exception(const bad_exception &ob) throw(); virtual -exception() throw(); exception &operator=(const exception &ob) throw(); virtual const char *what(() const throw(); }; class bad_exception: public exception { public: bad_exception() throw(); bad_exception(const bad_exception &ob) throw(); virtual ~bad_exception() throw(); bad_exception &operator=(const bad_exception &ob) throw(); virtual const char *what(() const throw(); }; Класс exception - это базовый класс для всех исключений, определенных стандартной библиотекой C++. Класс bad_exception представляет собой тип исключения, генерируемого функцией unexpected(). В каждом из этих классов функция-член what() возвращает указатель на строку с завершающим нулевым символом, которая описывает соответствующее исключение. Класс exception - это базовый класс для всех исключений, определенных стандартной библиотекой C++. Класс bad_exception представляет собой тип исключения, генерируемого функцией unexpected(). В каждом из этих классов функция-член what() возвращает указатель на строку с завершающим нулевым символом, которая описывает соответствующее исключение. Из класса exception выведен ряд других важных классов. Класс bad_alloc используется в случае неудачного выполнения оператора new. Класс bad_typeid оказывается полезным при попытке выполнения недопустимого выражения typeid. Наконец, класс bad_cast используется при попытке выполнить неверную операцию динамического приведения типа. Эти классы содержат те же члены, что и класс exception. Ниже приводятся типы, определенные в заголовке <exception>.
В следующей таблице перечислены функции, определенные в заголовке <exception>.
<stdexcept>Заголовок <stdexcept> определяет ряд стандартных исключений, которые могут быть сгенерированы библиотечными функциями C++ и/или системой времени выполнения. Существует два общих типа исключений, определяемых заголовком <stdexcept>: логические ошибки и ошибки времени выполнения(динамические ошибки). Логические ошибки обязаны своим существованием программистам. Динамические ошибки возникают из-за наличия ошибок в библиотечных функциях или системе времени выполнения и не подвластны контролю со стороны программиста. Определенные в языке C++ стандартные исключения, вызываемые логическими ошибками, выведены из базового класса logic_error. Они приведены в следующей таблице.
Перечисленные ниже динамические исключения выведены из базового класса runtime error.
|
Нет комментариев. Оставить комментарий: |