gpt4 book ai didi

c++ - 如果全局变量的声明抛出异常,如何退出 C++ 程序?

转载 作者:行者123 更新时间:2023-11-30 03:57:25 27 4
gpt4 key购买 nike

我有一个程序,我需要一个类的实例是全局的(它是常量),但是类的构造函数需要一个特定的文本文件存在(如果它不存在,程序应该退出)。如果我在构造函数中抛出一个异常,它就不能在构造函数之外被捕获,因为我不能在函数之外有一个 try{}catch{} block ,我需要这样做才能使类的实例成为全局的.

如果全局变量的声明抛出异常,我如何使用异常来确保内存仍然被清理?

最佳答案

首先,不要担心内存。

如果全局构造函数抛出异常,则说明您的程序存在的时间不够长,它已经在退出了。

接下来,如果您真的坚持,只需确保所有全局对象的析构函数也能够销毁所有关联的资源,因为无论如何它们都应该能够为 RAII 工作。

如果一个对象只是部分构造的,所有与成功完成的成员(和基础)ctors 对应的 dtor 都将被调用,因此确保您的 ctor 在 throw 时不会泄漏任何东西应该不会太难。

关于c++ - 如果全局变量的声明抛出异常,如何退出 C++ 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28005878/

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