Стандартная библиотека C ++ предоставляет классы, которые можно использовать для сообщения об определенных ошибках ([res.on.exception.handling]) в программах на C ++. В модели ошибок, отраженной в этих классах, ошибки делятся на две широкие категории: logic ошибки и runtime ошибки.
Отличительной особенностью логических ошибок является то, что они возникают из-за ошибок во внутренней логике программы. Теоретически их можно предотвратить.
Напротив, ошибки времени выполнения возникают из-за событий, выходящих за рамки программы. Их нелегко предсказать заранее. Заголовок определяет несколько типов предопределенных исключений для сообщения об ошибках в программе на C ++. Эти исключения связаны наследованием.<stdexcept>
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; }
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);
logic_error(const char* what_arg);
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);
domain_error(const char* what_arg);
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);
invalid_argument(const char* what_arg);
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);
length_error(const char* what_arg);
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);
out_of_range(const char* what_arg);
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);
runtime_error(const char* what_arg);
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);
range_error(const char* what_arg);
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);
overflow_error(const char* what_arg);
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);
underflow_error(const char* what_arg);