4. 标准异常类型
C++ 标准库中已经定义好了一些异常类型供我们使用。这些异常类型都包含在 std 名字空间下。
以下列出这些异常类型以及它们的头文件如下:
- std::logic_error:所有标准异常的基类,提供 what() 虚函数获取错误描述。头文件
<stdexcept>。- std::invalid_argument:函数接收到无效参数。头文件
<stdexcept>。 - std::domain_error:数学函数的定义域错误。头文件
<stdexcept>。 - std::length_error:试图创建超过最大允许长度的对象(如 std::string)。头文件
<stdexcept>。 - std::out_of_range:访问超出有效范围(如 vector::at() 越界)。头文件
<stdexcept>。
- std::invalid_argument:函数接收到无效参数。头文件
- std::runtime_error:表示运行时错误,通常无法在编译期检测。头文件
<stdexcept>。- std::range_error:内部计算中的范围错误。头文件
<stdexcept>。 - std::overflow_error:算术运算上溢(结果过大)。头文件
<stdexcept>。 - std::underflow_error:算术运算下溢(结果过小)。头文件
<stdexcept>。 - std::regex_error (since C++11):正则表达式库(
)在解析或匹配过程中出错。头文件 <regex>。 - std::system_error (since C++11):底层系统调用失败时抛出。 头文件
<system_error>。- std::ios_base::failure (since C++11):输入/输出流操作失败时抛出。 头文件
<ios> 或 <fstream>。
- std::ios_base::failure (since C++11):输入/输出流操作失败时抛出。 头文件
- std::range_error:内部计算中的范围错误。头文件
- std::bad_typeid:对空指针使用 typeid 操作符时抛出。 头文件
<typeinfo>。 - std::bad_cast:dynamic_cast 操作失败时抛出(针对引用类型)。 头文件
<typeinfo>。 - std::bad_weak_ptr (since C++11):使用无效的 std::weak_ptr 构造 std::shared_ptr 时抛出。 头文件
<memory>。 - std::bad_function_call (since C++11):调用空的 std::function 对象时抛出。头文件
<functional>。 - std::bad_alloc:内存分配失败时抛出(如 new 操作失败)。头文件
<new>。- std::bad_array_new_length (since C++11): 数组 new 操作的长度无效(如负数或超大)。 头文件
<new>。
- std::bad_array_new_length (since C++11): 数组 new 操作的长度无效(如负数或超大)。 头文件
- std::bad_exception:用于处理 unexpected_handler 抛出的意外异常。头文件
<exception>。