#6091. gesp四级真题分类八:异常处理
gesp四级真题分类八:异常处理
八、异常处理(共12题)
1. 下面的程序中,如果输入10 0,会输出( )。
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;
}
}
{{ select(1) }}
- Division by zero condition!
- 0
- 空
- 程序崩溃
2. 运行下面的代码,屏幕上将输出( )。
int divide(int a, int b) {
if (b == 0) throw runtime_error("division by zero error ");
return a / b;
}
int main() {
int x = 10, y = 0;
try {
int result = divide(x, y);
cout << "result:" << result << endl;
} catch (const runtime_error& e) {
cout << "caught an exception:" << e.what() << endl;
}
}
{{ select(2) }}
- division by zero error result: caught an exception:
- result: caught an exception: division by zero error
- caught an exception: division by zero error
- division by zero error caught an exception: division by zero error
3. 运行下面的代码,将出现什么情况?( )
double hmean(double a, double b) {
if (a == -b) throw runtime_error("Runtime error occurred");
return 2.0*a*b/(a+b);
}
int main() {
double x = 10, y = -10;
try {
int result = hmean(x,y);
cout << "hmean:" << result << endl;
} catch (const runtime_error& e) {
cout << "Caught:" << e.what() << endl;
} catch (...) {
cout << "Caught an unknown exception." << endl;
}
}
{{ select(3) }}
- 屏幕上输出 Caught: Runtime error occurred
- 屏幕上输出 Caught an unknown exception
- 程序调用 std::terminate()
- 编译错误
4. 在C++中,异常处理机制(try-catch块)的主要目的是( )。
{{ select(4) }}
- 提高程序的运行速度。
- 在程序发生运行时错误时,提供一种结构化的错误处理方式。
- 确保程序在编译时没有错误。
- 减少程序的内存占用。
5. 关于异常处理,以下说法错误的是( )。
{{ select(5) }}
- try 块中的代码可能会抛出异常
- catch 块可以有多个,处理不同类型的异常
- throw 语句用于抛出异常
- 所有异常都必须被捕获,否则程序会崩溃
6. 执行下面程序,输出结果是( )。
int divi(int a, int b) {
if (b == 0) throw 0;
return a / b;
}
int main() {
try {
cout << divi(10, 0);
} catch (const char* msg) {
cout << "A";
} catch (int) {
cout << "B";
}
}
{{ select(6) }}
- A
- B
- 程序崩溃
- 无输出
7. 执行下面代码,输出是( )。
int main() {
try {
try {
throw 42;
} catch (int e) {
cout << "Inner: " << e << endl;
throw;
}
} catch (int e) {
cout << "Outer: " << e << endl;
}
}
{{ select(7) }}
- Inner: 42
- Outer: 42
- Inner: 42 然后 Outer: 42
- 程序崩溃
8. 运行下面的代码,将出现( )。
double hmean(double a, double b) {
if (a == -b) throw runtime_error("Runtime error occurred.");
return 2.0*a*b/(a+b);
}
int main() {
double x = 10, y = -10;
try {
int result = hmean(x, y);
cout << "hmean: " << result << endl;
} catch (const runtime_error& e) {
cout << "Caught: " << e.what() << endl;
} catch (...) {
cout << "Caught an unknown exception." << endl;
}
}
{{ select(8) }}
- 屏幕上输出 Caught: Runtime error occurred.
- 屏幕上输出 Caught an unknown exception.
- 程序调用 std::terminate()
- 编译错误
9. 在C++语言中 try 子句里抛出的结构体等类型的异常无法被 catch 捕获。(判断题)
{{ select(9) }}
- 正确
- 错误
10. 如果一个异常在 try 块中抛出但没有任何 catch 匹配,它将在编译时报错。(判断题)
{{ select(10) }}
- 正确
- 错误
11. 以下代码只能捕获 int 类型异常。(判断题)
int main() {
try { throw 42; }
catch(...) { cout << "Caught" << endl; }
return 0;
}
{{ select(11) }}
- 正确
- 错误
12. 下面代码可以正常编译并输出10。(判断题)
#include <iostream>
using namespace std;
int calculate(int x, int y = 10);
int main() { cout << calculate(5); }
int calculate(int x, int y) { return x * y; }
int calculate(int x) { return x * 2; }
{{ select(12) }}
- 正确
- 错误