下面的程序中,如果输入 10 0 ,会输出( )。
#include<iostream>
using namespace std;
double Division(int a, int b)
{
if (b == 0)
throw "Division by zero condition!";
else
return ((double)a / (double)b);
}
void func()
{
int len, time;
cin >> len >> time;
cout << Division(len, time) << endl;
}
int main()
{
try {
func();
}
catch (const char* errmsg)
{
cout << errmsg << endl;
}
catch (const int errmsg)
{
cout << errmsg << endl;
}
return 0;
}答案A。指针和数组的代码追踪:画出变量和指针的内存示意图,追踪每次赋值后值的变化。
指针和数组追踪时画内存布局图可以大大简化理解。
【考点】异常处理|throw 语句|catch 块顺序
GESP C++ 四级「函数与异常」模块。命题人盯住的是:学生以为只要写了 try-catch 就万事大吉,却常忽略「抛出的类型必须和 catch 参数类型匹配」这一硬性规则,导致本题大量考生凭直觉选 D 或 B。