【发布时间】:2010-11-22 09:32:05
【问题描述】:
我似乎无法理解为什么人们说 C++ 异常更好。例如,我有一个应用程序,它从共享对象中加载要在应用程序中使用的函数对象。发生的事情是这样的:
bool LoadFunctions()
{
//Get Function factory.
FunctionFactory& oFactory = GetFunctionFactory();
//Create functions from the factory and use.
}
FunctionFactory& GetFunctionFactory()
{
//Get shared object handle.
void* pHandle = dlopen("someso.so");
//Get function ptr for Factory getter.
typedef FunctionFactory* (*tpfFacGet)();
tpfFacGet pF = static_cast<tpfFacGet>(dlsym(pHandle, "GetFactory"));
//Call function and return object.
return *((*pF)());
}
现在,很容易看出很多东西都可能出错。如果我像往常一样这样做,我会返回指针而不是引用,我会检查它们是否为NULL 并打印一条错误消息,如果不是则退出。这样,我知道哪里出了问题,我什至可以尝试从中恢复(即,如果我成功加载工厂并且未能加载一个函数,我可能仍会继续)。我不明白的是如何在这种情况下使用异常以及如何恢复程序而不是打印错误消息和qutting。有人可以告诉我如何以 C++ 方式执行此操作吗?
【问题讨论】:
标签: c++ exception-handling error-handling