【发布时间】:2010-12-29 09:29:42
【问题描述】:
我正在处理的所有类都有 Create()/Destroy()(或 Initialize()/Finalized())方法。
Create() 方法的返回值是 bool,如下所示。
bool MyClass::Create(...);
所以我可以通过返回值来检查实例的初始化是否成功。
没有 Create()/Destroy() 我可以在 constructor() 和 destructor() 中做同样的工作,但我无法解决下面的问题。
谁能帮帮我?提前致谢。
我不能使用例外,因为我的公司不喜欢它。
class Foo
{
private:
AnotherClass a;
public:
Foo()
{
if(a.Initialize() == false)
{
//???
//Can I notify the failure to the user of this class without using exception?
}
}
...
};
Foo obj;
【问题讨论】:
-
您的公司是否意识到每次调用
new或使用标准库时都会出现异常? -
@GMan 我们倾向于覆盖 operator new。我不知道图书馆的问题,你能告诉我更多吗?
-
在这种情况下使用 nothrow 关键字来避免 . int *p = new (nothrow) int [100]; //on fail 返回 NULL 指针但是你将如何避免 bad_cast 异常,可能你必须关闭异常?
-
我工作的一家商店有一条规则,即构造函数不能失败。所以构造函数的代码很少,用户不得不调用一个可能会失败的初始化方法。我的理解是消除异常的使用。
new的库代码已修改为不抛出异常。
标签: c++ exception constructor