C++Primer 5th Chap5 Statements

else语句对应的始终是最近的那条if语句,除非有{}强行控制,如:

  if(A){

    if(B){/*.............*/}

  }else{/*.......*/}//这里else和if(A)对应

break和continue处理的都是离其最近的循环(if语句不算循环)

异常处理

  throw语句(引发异常),try语句块(处理异常),catch子句(结束try语句)

  例如:throw

     if(item1.isbn()!=item2.isbn){

      throw runtime_error("Data must refer to same ISBN!");}//抛出异常,中止函数(runtime_error为一种异常类型,在头文件stdexcept中)

     cout<<item1+item2<<endl;

     try:

     while(cin>>item1>>item2){

      try{

        cout<<item1+item2<<endl;}//想要执行的语句

      catch(runtime_error err){//若失败则执行catch语句,抛出runtime_error 异常

        cout<<err.what()<<"\nTry again? Enter 'y' or 'n'"<<endl;

        char c;

        cin>>c;

        if(!cin||c=='n')break;} }

 标准异常:

   头文件:

exception定义最通用的异常类,只报告异常发生,无额外信息
stdexcept定义几种常见的异常类
new定义bad_alloc异常类型
type_info定义bad_cast异常类型

 

 

 

 

  stdexcept头文件中的异常类:

exception常见问题
runtime_error运行时才能检测到的问题
range_error运行时错误:结果超出值域范围
overflow_error运行时错误:上溢
underflow_error运行时错误:下溢
logic_error逻辑错误
domain_error

逻辑错误:参数对应结果值不存在

invalid_argument逻辑错误:参数无效
length_error逻辑错误:试图创建超出类型最大长度的对象
out_or_range逻辑错误:使用超出有效范围的值

 

 

 

 

 

 

 

 

 

  

 

 

 

 

对exception,bad_alloc,bad_cast对象只能默认初始化(不提供初始值),其他类型用string或c字符数组初始化;

  异常类只有what()唯一成员函数,返回c字符数组,提供异常信息。

转载于:https://www.cnblogs.com/hfut-freshguy/p/11494080.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值