gpt4 book ai didi

c++ - 为什么构造函数不能优雅地处理错误?

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

我阅读了以下内容

The inability to gracefully handle errors in C++ constructors is one good reason to avoid constructors that do more than nothing, and use initialization functions instead. And C++ exceptions are not a graceful way to handle errors, especially in constructors. If your member object constructor throws an exception, and you want to catch it in your constructor, the normally ugly colon syntax gets much uglier.

我想知道为什么构造函数不能优雅地处理错误?构造函数仍然可以支持 try-catch 那么为什么构造函数不能优雅地处理错误?

最佳答案

I would like to know why constructors cant gracefully handle errors ?

如果初始化失败,他们可以抛出异常。

这比让对象处于半事件状态的建议要“优雅”得多,以便稍后通过调用函数正确初始化。正确使用[1],异常保证对象要么完全初始化,要么不存在。

这个建议可能来自不赞成使用异常来报告错误情况的人;在这种情况下,C++ 确实成为一种极其笨拙的语言,没有方便的方式来表达初始化失败。幸运的是,异常的使用在大多数 C++ 程序员中是惯用的,因此通常不需要注意这种废话。

[1] 具体来说,结合RAII ,以避免需要“在您的构造函数中捕获它”或除错误处理程序本身之外的任何地方。

关于c++ - 为什么构造函数不能优雅地处理错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22411341/

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