小编rot*_*mod的帖子

程序是否应检查"不应该"的WinAPI函数是否失败,但可能会失败?

最近我使用GetWindowDC - > CreateCompatibleDC - > CreateCompatibleBitmap - > SelectObject - > BitBlt - > GetDIBits系列WinAPI函数更新了一些用于截屏的代码.现在我检查所有那些失败因为他们可以而且有时会失败.但是我必须通过删除创建的位图,删除创建的直流并释放窗口dc来执行清理.在我见过的任何例子中 - 即使在MSDN上 - 也没有检查相关函数(DeleteObject,DeleteDC <ReleaseDC)是否失败,大概是因为如果它们被检索/创建好,它们将永远被删除/释放OK.但是,他们仍然失败.

这只是一个值得注意的例子,因为呼叫完全相邻.但偶尔还有其他功能可能会失败,但在实践中永远不会.比如GetCursorPos.或者仅在传递无效数据时才会失败的函数,例如FileTimeToSytemTime.

那么,检查可能因失败而失败的所有功能是否良好?或者有些可以不检查?作为必然结果,当检查这些应该永不失败的失败函数时,什么是正确的?抛出运行时异常,使用断言,还有什么?

c++ error-handling winapi

8
推荐指数
2
解决办法
402
查看次数

标签 统计

c++ ×1

error-handling ×1

winapi ×1