gpt4 book ai didi

c++ - 为什么 try..catch block 需要大括号?

转载 作者:IT老高 更新时间:2023-10-28 14:00:55 25 4
gpt4 key购买 nike

虽然在 if ... else 等其他语句中,如果 block 中只有一条指令,您可以避免使用大括号,但您不能使用 try ... catch block 来做到这一点:编译器不会购买它。例如:

try
do_something_risky();
catch (...)
std::cerr << "Blast!" << std::endl;

使用上面的代码,g++ 只是说它在 do_something_risky() 之前需要一个“{”。为什么 try ... catch 和 if ... else 之间的这种行为差异?

谢谢!

最佳答案

直接来自 C++ 规范:

try-block:
try compound-statement handler-seq

如您所见,所有 try-block 都需要一个 compound-statement。根据定义,复合语句是用大括号括起来的多个语句。

在复合语句中包含所有内容可确保为 try block 生成新范围。在我看来,这也使所有内容都更易于阅读。

您可以在 C++ Language Specification 的第 359 页自行查看。

关于c++ - 为什么 try..catch block 需要大括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3008937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com