异常
异常是程序在执行期间产生的问题
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;
}