21 Language support library [language.support]

21.8 Exception handling [support.exception]

21.8.2 Class exception [exception]

namespace std {
  class exception {
  public:
    exception() noexcept;
    exception(const exception&) noexcept;
    exception& operator=(const exception&) noexcept;
    virtual ~exception();
    virtual const char* what() const noexcept;
  };
}

Класс exception определяет базовый класс для типов объектов, создаваемых в качестве исключений компонентами стандартной библиотеки C ++, и определенных выражений для сообщения об ошибках, обнаруженных во время выполнения программы.

Каждый класс стандартной библиотеки T , производный от класса, exception должен иметь общедоступный конструктор копии и общедоступный оператор присваивания копии, которые не завершаются с исключением. Эти функции-члены должны соответствовать следующему постусловию: если два объекта lhs и rhs оба имеют динамический тип T и lhs являются копией rhs, то strcmp(lhs.what(), rhs.what()) должны быть равны 0.

exception() noexcept;

Effects: Создает объект класса exception.

exception(const exception& rhs) noexcept; exception& operator=(const exception& rhs) noexcept;

Effects: Копирует exception объект.

Postconditions: Если *this и rhs оба имеют динамический тип, exception значение выражения strcmp(what(), rhs.what()) должно быть равно 0.

virtual ~exception();

Effects: Уничтожает объект класса exception.

virtual const char* what() const noexcept;

Returns: An реализации определенных НТБ .

Remarks: Сообщение может быть null-terminated multibyte string, подходящим для преобразования и отображенным как wstring ([string.classes], [locale.codecvt]). Возвращаемое значение остается действительным до тех пор, пока объект исключения, из которого оно получено, не будет уничтожен или неconst будет вызвана функция, не являющаяся членом объекта исключения.