异常安全

异常

  异常是程序在执行期间产生的问题
  C++异常是指在程序运行时发生的特殊情况,如除零操作
  异常提供了一种转移程序控制权的方式

异常处理的关键字

  - throw:当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。
  - try: try 块中的代码标识将被激活的特定异常,它后面通常跟着一个或多个 catch 块。
  - catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。

throw表达式

throw的语法格式
throw 表达式;
  抛出异常即检测是否发生异常,在C++中,采用 throw语句来实现
  如果检测到产生异常,则抛出异常
  异常是一个表达式,其值的类型可以是基本类型,也可以是类

try-catch语句块

try-catch的语法格式
try
{
  //语句块
}
catch(异常类型)
{
  //异常处理
}
catch(异常类型)
{
  //异常处理
}
  try...catch语句块的 catch可以有多个,但至少要有一个catch
try……catch语句的执行过程
  - 执行 try块中的语句,如果执行的过程中没有异常拋出,那么执行完后就执行最后一个 catch块后面的语句,所有 catch块中的语句都不会被执行;
  - 如果 try块执行的过程中拋出了异常,那么拋出异常后立即跳转到第一个“异常类型”和拋出的异常类型匹配的 catch块中执行(称作异常被该 catch块“捕获”),执行完后再跳转到最后一个 catch块后面继续执行。

异常示例

#include <iostream>

using std::cin;
using std::cout;
using std::endl;

void test()
{
  double x;
  double y;
  cin >> x >> y;

  try
  {
    if(0 == y)
    {
      throw y;
    }
    else
    {
      cout << "x / y = " << x / y << endl;
    }
  }
  catch(double d)
  {
    cout << "catch(double)" << endl;
  }
  catch(int e)
  {
    cout << "catch(int)" << endl;
  }
}

int main()
{
  test();
  return 0;
}
原文地址:https://www.cnblogs.com/xkyrl/p/14678962.html