gpt4 book ai didi

c++ - 需要在构造函数中 try catch

转载 作者:太空狗 更新时间:2023-10-29 20:06:37 31 4
gpt4 key购买 nike

链接http://gotw.ca/gotw/066.htm指出

道德#1:构造函数-try-block 处理程序只有一个目的——转换异常。 (并且可能进行日志记录或其他一些副作用。)它们对任何其他目的都没有用。

同时 http://www.parashift.com/c++-faq-lite/exceptions.html#faq-17.8

如果构造函数抛出异常,则对象的析构函数不会运行。如果你的对象已经做了一些需要撤销的事情(比如分配一些内存,打开一个文件,或者锁定一个信号量),这个“需要撤销的事情”必须被对象内部的数据成员记住。

这两个说法不矛盾吗?第一种暗示构造函数中的 try catch 几乎没有用,而第二种表示需要它来释放资源。我在这里缺少什么?

最佳答案

道德#1 谈论function-try-block,第二个陈述谈论普通try catch block ,两者截然不同。

您需要了解两者之间的区别,才能理解这两个句子的含义。 <强> This 这里的回答解释了这一点。

关于c++ - 需要在构造函数中 try catch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110636/

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