【发布时间】:2011-03-15 02:17:45
【问题描述】:
我有一个如下所示的 create 方法,我想(如果返回为空指针)从中获取错误。但是我希望这个错误处理是可选的,而不是调用函数的要求。
代码:
class foo {
foo() {...};
public:
~foo();
static foo* createFoo(int aparam = 42, int bparam = 10, int& error = ?) {
afoo* = new foo();
if (!afoo) {
error = 11;
return 0; //NULL
}
...
return afoo;
}
}
所以我可以决定使用:
foo* myfoo = createFoo(42);
if (!myfoo) { ... }
或者
int errorcode = 0;
foo* myfoo = createFoo(42, 10, errorcode);
...
此时(在我的真实代码中),我只是使用空指针(而不是 ref)并在给它错误之前在 createFoo 代码中确定它的有效性。
我的兴趣在于这种情况下的最佳实践。
【问题讨论】:
-
虽然我没有很好地理解你的问题,但我认为解决方案在于用没有错误的版本重载你的函数。
-
@AbiusX 我认为这可能是最好的选择,我只是在寻求其他意见。
-
afoo将永远为空。如果分配失败,new会抛出std::bad_alloc,如果分配失败,foo的构造函数会抛出异常。 -
谢谢詹姆斯,这只是一个例子,但我还是不知道 :)。
标签: c++ error-handling overloading