c++异常处理:throw,try,catch

        当程序的某部分检测到一个它无法处理的问题时,需要用到异常处理。此时,检测出
问题的部分应该发出某种信号以表明程序遇到了故障,无法继续下去了,而且信号的发出
方无须知道故障将在何处得到解决。一旦发出异常信号,检测出问题的部分也就完成了任
务。

try语句块中检测异常,如果出现异常,通过throw抛出异常,catch语句块中捕捉异常进行对应操作。

代码示例:

    int a = 2;
	int b = 3;
	try {
		if (a != b)
			throw invalid_argument("Denominator cannot be zero.");
	}
	catch(const invalid_argument& a){
		cout << a.what();
	}

语法上

throw后面应该紧跟异常类型:

throw exception_object;注意后面应该传入字符串以构造异常对象。

exception_object:可以是任何类型的对象,只要它至少可以被拷贝或移动。所以我们可以自定

义异常类型。


    std::exception(异常基类)
    std::bad_alloc(用于内存分配失败)
    std::bad_cast(用于类型转换失败)
    std::bad_typeid(用于 typeid 操作失败)
    std::bad_exception(用于标准异常处理失败)
    std::logic_error(用于逻辑错误)
        std::invalid_argument(用于无效参数)
        std::domain_error(用于域错误)
        std::invalid_argument(用于无效参数)
        std::length_error(用于长度错误)
        std::out_of_range(用于超出范围)
    std::runtime_error(用于运行时错误)
        std::range_error(用于范围错误)
        std::overflow_error(用于溢出错误)
        std::underflow_error(用于下溢错误)

try catch的语法上

catch内部通常以引用的方式捕捉异常,通过异常对象访问异常信息,如调用what函数。

catch内部可以重新抛出异常,使用throw。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值