C++ Exception

Posted by CoolMind on

简介

C++ 中的异常主要分为两大类:

  • runtime_error
    • 程序在运行时出现的异常
  • logic_error
    • 程序本身的逻辑错误,例如函数入参不对

它们都派生自 std::exception.

  • 主要有构造函数(接受 const std::string&const char*
  • what() 函数返回当前异常的可描述信息

Google code style 是不建议使用的, 这个可能主要是因为他们很多代码都没有基于异常机制写。

异常声明

异常捕获

  • 如何捕获异常
  • 捕获异常时有哪些注意点

函数提供的保证

  • 函数提供哪些保证
  • 出现异常时怎么处理:
    • 构造函数: 出现异常时,如果异常被捕获了,则所有已经构造好的成员对象会被析构,否则这个是实现 相关的,即由实现来决定是否调用相关的析构函数,还是直接 std::terminated
    • 析构函数: 不允许出现异常,否则:std::terminated
  • 改变异常处理流程的函数
    • set_unexpected
    • set_terminated
    • set_new_handler

本文完