GESP 四级 · GESP 202509 C++ 四级 第 24 题

判断题 · 答案 B

← 整套速查表 GESP 四级 全部真题

题目

以下代码只能捕获 int 类型异常。

int main() {
    try {
        throw 42;
    } catch (...) {
        cout << "Caught" << endl;
    }
    return 0;
}
答案:B

解题思维

答案B。基本数据类型占用内存大小:char(1B)、bool(1B)、int(4B)、float(4B)、double(8B)。指针类型(如int*)通常占8B(64位系统)。

常见错误

int类型取值范围有限(通常-2³¹~2³¹-1)。指针类型大小在64位系统上为8字节。

详细解析(节选)

【考点】异常处理|catch(...)捕获所有|类型匹配

1. 🎯 考纲定位 GESP四级《基本编程》模块中,异常处理为必考内容。本题精准卡住"catch(...)能捕获任意类型异常"这一基础语义,是命题人设置的经典陷阱,大量考生因混淆具体类型捕获与万能捕获而失分。官方大纲明确将catch(...)列为可捕获任意类型异常,故该题属于基础考点。

2. 🧠 解题思维 解题链:看到catch(...)先识别其为万能捕获块,语义上可捕获任何类型异常,与抛出类型无关。本题抛出int却仍落入catch(...),直接判定原命题错误。通法:遇到catch(...)一律视为捕获所有,不依赖具体类型;若为catch(T&)则仅捕获T及其派生类。需注意catch(...)在捕获顺序中优先级最低,但能捕获所有异常。

3. 🪤 陷阱拆解 错误选项A利用"只能捕获int"的绝对化表述制造陷阱。命题人利用考生将catch(...)与具体类型catch混同的思维定式,若死记"catch(...)只能捕获当前异常"必掉坑。阴险细节是"只能"二字,排除一切其他类型可能;若改为"捕获int类型异常"则语义正确,但原题故意用极端表述增加迷惑性。此题测试考生对异常类型匹配规则的理解深度。

4. 🔄 反命题思维 若将catch(...)改为catch(int&),则原命题成立;或增加catch(...)后接具体catch块,会改变捕获顺序。刷到类似题先问:命题人想考我对catch(...)的语义理解,还是对捕获顺序的掌握?若题目改为"以下代码能捕获int异常吗?"答案仍为是,但本题用"只能"一词制造陷阱,考查考生对异常类型匹配规则的理解深度。

官方答案:B

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断