22 Diagnostics library [diagnostics]

22.2 Exception classes [std.exceptions]

Стандартная библиотека C ++ предоставляет классы, которые можно использовать для сообщения об определенных ошибках ([res.on.exception.handling]) в программах на C ++. В модели ошибок, отраженной в этих классах, ошибки делятся на две широкие категории: logic ошибки и runtime ошибки.

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

Напротив, ошибки времени выполнения возникают из-за событий, выходящих за рамки программы. Их нелегко предсказать заранее. Заголовок определяет несколько типов предопределенных исключений для сообщения об ошибках в программе на C ++. Эти исключения связаны наследованием.<stdexcept>

22.2.1 Header <stdexcept> synopsis [stdexcept.syn]

namespace std {
  class logic_error;
    class domain_error;
    class invalid_argument;
    class length_error;
    class out_of_range;
  class runtime_error;
    class range_error;
    class overflow_error;
    class underflow_error;
}

22.2.2 Class logic_­error [logic.error]

namespace std {
  class logic_error : public exception {
  public:
    explicit logic_error(const string& what_arg);
    explicit logic_error(const char* what_arg);
  };
}

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

logic_error(const string& what_arg);

Effects: Создает объект класса logic_­error.

Postconditions: strcmp(what(), what_­arg.c_­str()) == 0.

logic_error(const char* what_arg);

Effects: Создает объект класса logic_­error.

Postconditions: strcmp(what(), what_­arg) == 0.

22.2.3 Class domain_­error [domain.error]

namespace std {
  class domain_error : public logic_error {
  public:
    explicit domain_error(const string& what_arg);
    explicit domain_error(const char* what_arg);
  };
}

Класс domain_­error определяет тип объектов, создаваемых реализацией как исключения для сообщения об ошибках домена.

domain_error(const string& what_arg);

Effects: Создает объект класса domain_­error.

Postconditions: strcmp(what(), what_­arg.c_­str()) == 0.

domain_error(const char* what_arg);

Effects: Создает объект класса domain_­error.

Postconditions: strcmp(what(), what_­arg) == 0.

22.2.4 Class invalid_­argument [invalid.argument]

namespace std {
  class invalid_argument : public logic_error {
  public:
    explicit invalid_argument(const string& what_arg);
    explicit invalid_argument(const char* what_arg);
  };
}

Класс invalid_­argument определяет тип объектов, создаваемых как исключения для сообщения о недопустимом аргументе.

invalid_argument(const string& what_arg);

Effects: Создает объект класса invalid_­argument.

Postconditions: strcmp(what(), what_­arg.c_­str()) == 0.

invalid_argument(const char* what_arg);

Effects: Создает объект класса invalid_­argument.

Postconditions: strcmp(what(), what_­arg) == 0.

22.2.5 Class length_­error [length.error]

namespace std {
  class length_error : public logic_error {
  public:
    explicit length_error(const string& what_arg);
    explicit length_error(const char* what_arg);
  };
}

Класс length_­error определяет тип объектов, создаваемых как исключения, чтобы сообщить о попытке создания объекта, длина которого превышает его максимально допустимый размер.

length_error(const string& what_arg);

Effects: Создает объект класса length_­error.

Postconditions: strcmp(what(), what_­arg.c_­str()) == 0.

length_error(const char* what_arg);

Effects: Создает объект класса length_­error.

Postconditions: strcmp(what(), what_­arg) == 0.

22.2.6 Class out_­of_­range [out.of.range]

namespace std {
  class out_of_range : public logic_error {
  public:
    explicit out_of_range(const string& what_arg);
    explicit out_of_range(const char* what_arg);
  };
}

Класс out_­of_­range определяет тип объектов, создаваемых как исключения, чтобы сообщить значение аргумента, выходящее за пределы ожидаемого диапазона.

out_of_range(const string& what_arg);

Effects: Создает объект класса out_­of_­range.

Postconditions: strcmp(what(), what_­arg.c_­str()) == 0.

out_of_range(const char* what_arg);

Effects: Создает объект класса out_­of_­range.

Postconditions: strcmp(what(), what_­arg) == 0.

22.2.7 Class runtime_­error [runtime.error]

namespace std {
  class runtime_error : public exception {
  public:
    explicit runtime_error(const string& what_arg);
    explicit runtime_error(const char* what_arg);
  };
}

Класс runtime_­error определяет тип объектов, создаваемых как исключения для сообщения об ошибках, предположительно обнаруживаемых только при выполнении программы.

runtime_error(const string& what_arg);

Effects: Создает объект класса runtime_­error.

Postconditions: strcmp(what(), what_­arg.c_­str()) == 0.

runtime_error(const char* what_arg);

Effects: Создает объект класса runtime_­error.

Postconditions: strcmp(what(), what_­arg) == 0.

22.2.8 Class range_­error [range.error]

namespace std {
  class range_error : public runtime_error {
  public:
    explicit range_error(const string& what_arg);
    explicit range_error(const char* what_arg);
  };
}

Класс range_­error определяет тип объектов, создаваемых как исключения для сообщения об ошибках диапазона во внутренних вычислениях.

range_error(const string& what_arg);

Effects: Создает объект класса range_­error.

Postconditions: strcmp(what(), what_­arg.c_­str()) == 0.

range_error(const char* what_arg);

Effects: Создает объект класса range_­error.

Postconditions: strcmp(what(), what_­arg) == 0.

22.2.9 Class overflow_­error [overflow.error]

namespace std {
  class overflow_error : public runtime_error {
  public:
    explicit overflow_error(const string& what_arg);
    explicit overflow_error(const char* what_arg);
  };
}

Класс overflow_­error определяет тип объектов, создаваемых как исключения для сообщения об ошибке арифметического переполнения.

overflow_error(const string& what_arg);

Effects: Создает объект класса overflow_­error.

Postconditions: strcmp(what(), what_­arg.c_­str()) == 0.

overflow_error(const char* what_arg);

Effects: Создает объект класса overflow_­error.

Postconditions: strcmp(what(), what_­arg) == 0.

22.2.10 Class underflow_­error [underflow.error]

namespace std {
  class underflow_error : public runtime_error {
  public:
    explicit underflow_error(const string& what_arg);
    explicit underflow_error(const char* what_arg);
  };
}

Класс underflow_­error определяет тип объектов, создаваемых как исключения для сообщения об арифметической ошибке недостаточного заполнения.

underflow_error(const string& what_arg);

Effects: Создает объект класса underflow_­error.

Postconditions: strcmp(what(), what_­arg.c_­str()) == 0.

underflow_error(const char* what_arg);

Effects: Создает объект класса underflow_­error.

Postconditions: strcmp(what(), what_­arg) == 0.