c++中throw的用法

一般用在try catch 块中,在try 中抛出可能的异常类,后面可以接一系列的catch子句,子句的排列顺序从特殊到一般。catch(...)必须是最后一个子句。


在catch子句中,可以继续抛出异常,eg :    throw ; 这样直接抛出接受到的异常,给后续的catch子句处理。


比较特殊的是 可以在构造函数的初始化列表前面加try关键字, 这样初始化列表的异常也可以检测到,与后面的catch子句组成构造函数模块,这是构造函数所特有的用法。


标准库函数中好多类的析构函数在形参列表后面加了throw(),这句话是不抛出任何异常的意思,如果要继承标准库中这样的类,则继承类的析构函数也必须声明不抛出任何异常,加上throw()。


函数接口包括抛出的异常类型,如 int (*p)(int) throw(std::runtime_error,std::logic_error)  跟 int (*p1)(int) throw(std::runtime_error)是不同的函数指针,p1可以赋值给

p,但是反过来不行。也就是说,两个函数的抛出类型必须越来越严格,否则接口不兼容。    

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值