C++提供了一系列标准的异常,定义在<exeception>中,异常类层次结构如果所示:
下表是对上面层次结构中出现的每个异常的说明:
异常
|
描述
|
std::exception
|
该异常是所有标准 C++ 异常的父类。
|
std::bad_alloc
|
该异常可以通过 new 抛出。
|
std::bad_cast
|
该异常可以通过 dynamic_cast 抛出。
|
std::bad_exception
|
这在处理 C++ 程序中无法预期的异常时非常有用。
|
std::bad_typeid
|
该异常可以通过 typeid 抛出。
|
std::logic_error
|
理论上可以通过读取代码来检测到的异常。
|
std::domain_error
|
当使用了一个无效的数学域时,会抛出该异常。
|
std::invalid_argument
|
当使用了无效的参数时,会抛出该异常。
|
std::length_error
|
当创建了太长的 std::string 时,会抛出该异常。
|
std::out_of_range
|
该异常可以通过方法抛出,例如 std::vector 和 std::bitset<>::operator[]()。
|
std::runtime_error
|
理论上不可以通过读取代码来检测到的异常。
|
std::overflow_error
|
当发生数学上溢时,会抛出该异常。
|
std::range_error
|
当尝试存储超出范围的值时,会抛出该异常。
|
std::underflow_error
|
当发生数学下溢时,会抛出该异常。
|
|
请发表评论