使用VC6打开考生文件夹下的源程序文件modi.cpp,该程序运行时有错误,请改正错误,使得程序正常运行,并且要求最后一个catch()必须抛出执行的任何异常。 程序通过抛出异常输出: error ERROR 注意:不要改动

admin2015-05-30  12

问题 使用VC6打开考生文件夹下的源程序文件modi.cpp,该程序运行时有错误,请改正错误,使得程序正常运行,并且要求最后一个catch()必须抛出执行的任何异常。
    程序通过抛出异常输出:
    error
    ERROR
    注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
    1  #include
    2    int main()
    3    {
    4   try
    5    f
    6   throw("error");
    7    }
    8    //********error********
    9    catch(char S)
    10    {
    11    cout<    12    }
    13    try
    14    {
    15    throw((int)0);
    16    }
    17    //********error********
    18    catch()
    19    {
    20    cout<    21    }
    22   try
    23    {
    24    throw(0);
    25  throw("error");
    26    }
    27    //********error********
    28    catch()
    29    {
    30    cout<<”ERROR“<    31    }
    32    return 0;
    33  }

选项

答案(1)catch(char*S) (2)catch(int i) (3)catch(...)

解析 本程序是对各种异常信息的处理。try.catch的结构中,catch了句用来捕捉异常的信息。
    [解题思路]
    (1)第1个标识前的异常抛出语句为“throw("error"):”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(char s)”是字符型的,所以第2个标识下的语句修改为“catch(char*s)”。
    (2)第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。所以对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则找不到匹配的catch块,那么系统就会调用一个系统函数,使程序终止运行。即第1个标识下的语句修改为“catch(inti)”。
    (3)如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。
转载请注明原文地址:https://kaotiyun.com/show/bJNp777K
0

最新回复(0)