异常

本文详细介绍了C++中的异常处理机制,包括try-throw-catch语句的使用,异常的抛出与捕获,以及如何声明函数可能抛出的异常类型。此外,还深入探讨了C++标准异常库的组成部分,如exception基类及其派生类,如runtime_error、logic_error等,以及如何使用这些异常来提高代码的健壮性和可维护性。

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

异常的处理
通过try-throw-catch语句
try
{
语句组
throw 异常类型;

}catch(异常类型)

catch可以有多个,至少有一个,catch还有一个可以处理任何异常的类型
try
{
throw 1;
}
catch(…){}

如果没有任何catch解决抛出的异常,程序就会调用terminate方法中断程序

异常可以再抛出,如果一个异常没有在本函数得到解决,那么它就会[抛到它的上一层函数

函数异常声明列表
void func()throw(int,double);这句话规定了函数可以抛出的异常类型,当然,如果你不想抛出异常,可以写throw();

栈解旋:从try到throw抛出异常前,栈上所有的对象都会被释放

异常的多态使用:
利用多态来实现printError同一个接口调用
抛出不同的错误对象

另外,C++还提供了了一套标准的异常库,主要就是让你抛出相应的异常
包含在头文件#include中
常见异常:
exception//这是所有异常的父类
{
bad_cast{};//new操作符不能正确分配内存

runtime_error//运行错误
{
	overflow_error;//上溢
	underflow_error;//下溢
	range_error;//边界错误
	system_error;//系统错误
}

logic_error //逻辑错误
{
	domain_error;//域错误
	invalid_argument;//非法参数
	out_of_range;//访问超界
	length_error;//通常指创建对象的尺寸太大
	future;//未知错误

}

bad_alloc{};

}
具体用法
void dowork()
{
try{
throw std::out_of_range(“访问出界”);//抛出异常
}
catch(exception e)
{
std::cout<<ex.what();//打出异常信息
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值