zoukankan      html  css  js  c++  java
  • c++Primer第五版练习 5.23 5.24 5.25

     
    题目:

    5.23

    编写一段程序,从标准输入读取两个整数,输出第一个数除以第二个数的结果。

    5.24

    修改你的程序,使得当第二个数是0时抛出异常。先不要设定catch子句,运行程序并真的为除数输入0,看看会发生什么?

    5.25

    修改上一题的程序,使用try语句块去捕获异常。catch子句应该为用户输出一条提示信息,询问其是否输入新数并重新执行try语句块的内容。

     
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
    int data1,data2;
    while(cin>>data1>>data2)
    {
    try    //异常处理
    {
         if(data2==0)
          {
              throw runtime_error("除数不能为0 ");   //使用throw检测异常,可以说throw raise 异常
         }
     
         cout<<data1/data2<<endl;
    }
    catch(runtime_error err)
    {
         cout<<err.what()<<"请重新输入"<<endl;
    }
    }
        return 0;
    }
     
     

    /*一个程序中出现多个异常如何处理*/
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
    int data1,data2;
    while(cin>>data1>>data2)
    {
    try
    {
    if(data2==0)   
    {
    throw runtime_error("除数不能为0 ");   //第一个异常:除数为0
    }
    else if(!(data2>=1&&data2<=9))  
    {
    throw exception("除数不在1到9之间 ");  //第二个异常:除数不在1-9之间 ,自添加,主要是判断多个catch的使用
    }
    cout<<data1/data2<<endl;
    }
    catch(runtime_error err)
    {
    cout<<err.what()<<"请重新输入"<<endl;  //前面的err.what()是为了提供关于异常的文本信息
    }
    catch( exception err )
    {
    cout<<err.what()<<"请重新输入"<<endl;
    }
    }
        return 0;
    }
     
     
     
    问题:多个异常的处理
     
    <stdexcept>定义的异常类:
    exception                  最常见的问题
    runtime_error           只有在运行时才能检测出的问题
    range_error              运行时错误,生成的结果超出了有意义的值域范围
    overflow_error         运行时错误;计算上溢
    underflow_error       运行时错误;计算上溢
    logic_error                程序逻辑错误
    domain_error           逻辑错误: 参数对应的结果值不存在
    invalid_argument     逻辑错误: 无效参数
    length_error             逻辑错误:试图创建一个超出该类型最大长度的对象
    out_of_range           逻辑错误:使用一个超出有效范围的值
  • 相关阅读:
    ioi1998 Polygon
    [Noip模拟题]Seq
    [noip模拟]分组行动
    入门OJ:photo
    Sgu167 I-country
    入门OJ:简单的网络游戏
    入门OJ:Coin
    ATT&CK实战系列
    Metasploit Framework(二)
    RoarCTF 2019
  • 原文地址:https://www.cnblogs.com/whitewn/p/6524086.html
Copyright © 2011-2022 走看看