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

时间:2015-01-18 00:26:06

标签: c++ exception-handling global-variables

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

如果全局变量的声明引发异常,我如何使用异常来确保内存仍被清除?

1 个答案:

答案 0 :(得分:2)

首先,不要担心记忆。

如果全球的构造者抛出,你的程序不会长时间停留以至于重要,它已经在出路了。

接下来,如果你真的坚持,只要确保所有全局对象的析构函数也能够销毁所有相关资源,因为它们应该能够使RAII能够工作。

如果一个物体只是部分构造,那么所有与成功完成的成员(和基础)ctors相对应的dtors都会被调用,所以它不应该太难以确保你的ctor在投掷时不会泄漏任何东西。