c++ 异常规范

不要使用具有具体类型列表的异常规范。确定一个函数不会抛出异常,可以考虑使用noexcept。在其他情况下,为确保代码的清晰性和可维护性,最好省略异常规范并在文档和/或注释中说明函数可能抛出的异常。

在C++中,可以在函数声明后指明可能会抛出的异常类型。这被称为异常规范。但是,异常规范的使用是有争议的,而且在某些情况下可能会引发不预期的问题。

以下是如何使用异常规范:

void myFunction() throw(int) {
    // ... function body
}

在上述代码中,myFunction函数指定了只会抛出int类型的异常。

但是,请注意以下几点:

  1. 限制性:异常规范限制了函数可能抛出的异常类型。如果函数抛出了异常规范外的异常,std::unexpected将会被调用。这可能导致程序意外地终止。

  2. 维护问题:当函数实现变更时,异常规范可能需要重新评估和更新,这可能会导致维护问题。

  3. 性能问题:在某些编译器和平台上,异常规范可能导致额外的运行时开销。

  4. C++11后的变化:从C++11开始,引入了noexcept规范,它表示函数不会抛出异常。与早期的throw()不同,noexcept对性能的影响更为正面,并且在现代C++编码中更为推荐。

void myFunction() noexcept {
    // ... function body
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值