【发布时间】:2011-03-22 16:09:52
【问题描述】:
在谈到错误处理时,我有些困惑。 以 Direct2D 为例。 在开始使用 Direct2D 功能之前,我们必须创建一个 ID2DFactory 对象:
HRESULT hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &d2d1Factory);
从上面可以看到。我们可以检查 HRESULT hr,看看我们是否成功创建了 ID2DFactory。 我认为当这个调用失败时,即使我再次调用它,它仍然会失败。我们没有任何方法可以从这个故障中恢复。
那么检查返回值有什么意义呢?是为了让我们可以在终止程序之前告诉用户出了什么问题吗?
另一个例子是内存不足。当我们遇到罕见的情况时,我们的程序没有足够的内存来“新”一些对象。 在 C++ 中,当内存不足时,new 运算符可能返回 NULL 或引发错误。如果您不测试它是否为 NULL 也不捕获错误,您的程序将终止。我认为您的程序无法从这种情况中恢复过来。
那么,再次检查是否存在您无能为力的严重错误有什么意义?
【问题讨论】:
标签: c++ error-handling