C++ exception
C++异常处理
异常无处不在,程序随时可能误入歧途!C++ 提出了新的异常处理机制!
异常是一种程序控制机制,与函数机制互补
函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它可以在出现“意外”时中断当前函数,并以某种机制(类型匹配)回馈给隔代的调用者相关的信息.
传统错误处理机制
通过函数返回值来处理错误
|
C++异常处理基本语法
异常发生第一现场,抛出异常
void function( ){ |
在需要关注异常的地方,捕捉异常
try{ |
C++之中有一些已经定义好的异常类型
std::exception
:该异常是所有标准 C++ 异常的父类。std::bad_alloc
:该异常可以通过new
抛出。std::bad_cast
:该异常可以通过dynamic_cast
抛出。std::bad_typeid
:该异常可以通过typeid
抛出。std::bad_exception
:这在处理 C++ 程序中无法预期的异常时非常有用。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
:当发生数学下溢时,会抛出该异常。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 张振强的个人博客!