未捕获异常会调用 std::terminate 终止程序。
答案A。函数必须有函数名。函数可以没有参数,可以没有返回值(void类型),定义可以在调用之后(需提前声明)。
函数必须有名称,但可以有默认参数。参数默认以值传递(传值)。函数未被调用时参数不占内存。
【考点】异常处理|标准库函数|std::terminate
GESP 四级 C++ 标准库模块,考察异常机制的强制终止行为。命题人精准卡住考生对"未捕获异常"后果的认知——很多只背"异常会被 catch 捕获",却忽略标准库规定未捕获异常必然终止程序,这是四级 C++ 异常处理的核心考点。
看到题先锁定关键词std::terminate,回忆 C++ 标准异常流程:未捕获异常必然触发该函数终止程序。
错误选项 B 利用了两个典型陷阱:一是把std::terminate当成用户可定义的函数,二是误以为异常"被捕获"是默认行为。其实标准库明确规定未捕获异常必然触发该函数,B 选项正是利用考生对异常处理流程的记忆偏差,特别是对std::terminate是否为用户可定义函数的误解。
如果把题干改成"未捕获异常会被默认异常处理器捕获",答案就变成 B 了——因为默认处理器正是调用std::terminate而非捕获,这恰恰是命题人想区分的细节,考生若只记结论不追流程就会掉进这个坑。