gpt4 book ai didi

c++ - 是否存在使用 catch all 子句 : catch (. ..) 的情况?

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

每次我看到 catch all 语句时:

try 
{
// some code
}
catch (...)
{

}

一直是一种滥用。

反对使用 cache all 子句的论点是显而易见的。它会捕获任何,包括操作系统生成的异常,例如访问冲突。由于异常处理程序不知道它在处理什么,在大多数情况下,异常将表现为模糊的日志消息或一些不连贯的消息框。

所以 catch(...) 看起来天生就是邪恶的。

但它仍然在 C++ 中实现,其他语言(Java、C#)也实现了类似的机制。那么在某些情况下它的使用是合理的吗?

最佳答案

(1) 声明 捕获操作系统异常是不正确的。您对“访问冲突”一词的使用背叛了 Windows 背景;对于旧的 MSVC++ 版本来说是这样。

(2) 无论如何,包罗万象的行为对于具有特定目的的线程很有用。捕获失败允许线程报告失败。没有它,程序的其他部分需要处理线程消失的可能性。它还允许您记录哪个线程失败,以及用于启动线程的参数。

关于c++ - 是否存在使用 catch all 子句 : catch (. ..) 的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824910/

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