gpt4 book ai didi

C++ "catch (...)"参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:40 25 4
gpt4 key购买 nike

我最近在一些c++代码中看到了一些有趣的东西:

try {
//doStuff
} catch ( ... ) {
//doStuff
}

我指的是“...”。

现在,乍一看可能会认为这只不过是一个填充物,就像我们看到的类似于“doStuff”的评论。奇怪的是,在 Eclipse CDT 中输入这个实际上是有效的,没有给出任何语法错误。

这样做有什么特殊目的吗?

最佳答案

正如其他人所提到的,它捕获了一切。据我所知,这主要用于无法识别抛出的实际异常的情况。如果该异常是 Structured Exception,则可能会发生这种情况,这不是 C++ 的。例如,如果您尝试访问一些无效的内存位置。使用那些“catch all”通常不是一个好习惯。您没有(可移植的)方法来获取堆栈跟踪,并且您对抛出的异常一无所知。

出于示例或非常琐碎的案例以外的原因使用它可能表明作者试图通过不适当处理无法识别的异常来隐藏程序的不稳定性。如果遇到这种情况,最好让程序崩溃,并创建一个故障转储供以后分析。或者,使用 structured exception handler (如果您使用的是 VS - 不知道在其他编译器上是如何完成的)。

关于C++ "catch (...)"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6742639/

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