gpt4 book ai didi

c++ - 你真的可以有一个没有主体的函数/方法,而只是一个 try/catch block 吗?

转载 作者:IT老高 更新时间:2023-10-28 21:41:21 26 4
gpt4 key购买 nike

请注意,此函数没有“{”和“}”主体。只是一个 try/catch block :

void func( void )
try
{
...
}
catch(...)
{
...
}

这是有意成为 C++ 的一部分,还是 g++ 扩展?

除了绕过 1 级 {} 之外,还有其他目的吗?

在遇到 http://stupefydeveloper.blogspot.com/2008/10/c-function-try-catch-block.html 之前我从未听说过这个。

最佳答案

是的,那是有效的 C++。我发现它的一个目的是将异常转换为返回值,并将返回值中的异常转换代码与函数中的其他代码分开。是的,您可以 return x; 从像您展示的那样的 catch block 中(实际上我最近才发现)。但在这种情况下,我可能会使用另一层大括号并将 try/catch 放在函数中。大多数 C++ 程序员会更熟悉它。

另一个目的是捕获构造函数初始化列表抛出的异常,它使用类似的语法:

struct f {
g member;
f() try {
// empty
} catch(...) {
std::cerr << "thrown from constructor of g";
}
};

关于c++ - 你真的可以有一个没有主体的函数/方法,而只是一个 try/catch block 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/335839/

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