异常处理

本文深入探讨了C++中的异常处理语法,包括throw表达式的使用,如何通过try子句保护可能引发异常的代码,以及如何利用catch子句捕获并处理异常。通过一个具体的除法函数示例,展示了不同异常类型如何被捕获和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常处理的语法

如果某段程序发现了自己不能或不想处理的异常,就可以使用throw表达抛出这个异常。将它抛给调用者。throw 的操作数表示异常类型,语法上与return操作数相类似。如果程序中有多种要抛出的异常,应该用不同的操作数类型来互相区别。

try子句后的复合语句是受保护的代码段。如果预料某段程序代码或对某函数的调用可能发生异常,就将它放在try块中。如果这段代码运行时真的发生异常,其中throw表达式就会抛出这个异常。

catch子句时异常处理函数,捕获由throw表达式抛出的异常。异常声明部分指明了子句处理异常的类型和异常参数名称。类型可以是有任何有效的数据类型,包括C++的类。当异常被抛出后,catch子句便依次检查,若某个catch子句声明的异常类型与被抛出的异常类型一致,则执行该段代码。如果异常类型是一个省略号,catch子句便会处理所有类型的异常,这段处理程序必须是catch子句的最后一个分支。

下面有一个例子:

#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>

using namespace std;

int divide(int a,int b)
{
       if(b ==0)
       {
             throw a;
       }
       return a/b;
}
int main()
{
       try
       {
             printf("5/2 =%d\n",divide(5,2));
             printf("8/0 =%d\n",divide(8,0));
             printf("7/1 =%d\n",divide(7,1));
       }
       catch(int e)
       {
             printf("%d is divide by 0!\n",e);
       }
       catch(double e)
       {
             printf("double exception process...\n");
       }
       catch(...)
       {
             printf("default exception process...\n");
       }
       printf("It's ok!\n");
       return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值