我将在一个使用异常处理错误的大型项目中使用库。该库使用返回代码进行错误处理,这意味着所有函数都将返回一个常量,定义函数是成功还是发生任何错误。
如果库函数失败,我的函数常常不得不中止。有比以下代码段中给出的示例实现更好的方法来处理这些错误吗?
我的问题的一个主要问题是在每次计算返回代码后释放以前分配的内存。这是容易出错和麻烦的。我希望找到一些准则来防止在每次调用库函数时重新分配...
void examplefunc()
{
T* pT = new T();
U* pU = new U();
Q myQ;
int iRes = CONST_SUCCESS;
if ((iRes = myQ.func1())!= CONST_SUCCESS)
{
delete pU;
delete pT;
throw translateException(iRes); // providing exc
}
if ((iRes = mQ.func2())!= CONST_SUCCESS)
{
delete pU;
delete pT;
throw translateException(iRes); // providing exc
}
delete pU;
delete pT;
return;
}
谢谢大家的建议。有什么我可以遵循的准则吗?
最好的问候 山姆
最佳答案
使用智能指针。例如。而不是:
T* pT = new T();
你可以使用 C++11 的 unique_ptr
:
std::unique_ptr<T> pT = make_unique<T>();
一旦包装对象超出范围,unique_ptr 就会自动销毁内部指针。
关于c++ - 如何使用返回值整理 C++ 错误处理? (解除分配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12656124/