Meh*_*dad 5 c windows error-handling winapi error-code
一些Windows功能,如CreateFile可以返回一个巨大各种错误代码时GetLastError被调用,这是不切实际的检查每一个可能的错误代码-往往有没有足够的文档,以及新的错误代码频繁地增加.
其中一些(例如访问冲突或无效参数)是由程序员错误引起的,不应允许继续执行程序.但是,其他因素是由于其他因素造成的,例如错误的文件权限,共享冲突,错误的文件名等,开发人员很少或根本无法控制.
我想处理所有"非关键"错误(例如错误的文件名),同时允许"严重错误"(例如访问冲突)使我的程序崩溃.
理想情况下,我会说:
// ... an error occurred. Is it a programmer error?
if (IsErrorCritical(GetLastError()))
{
// Yes; raise an exception, crashing the program.
RaiseException(GetLastError(), 0, 0, NULL);
}
Run Code Online (Sandbox Code Playgroud)
如何确定哪些错误代码可以安全地抑制(例如,在枚举磁盘上的文件时),何时无法预测每一个结果?
我认为这确实取决于具体情况,不可能一概而论,而是需要根据具体情况来决定。
我这么说的原因是,有时相同的错误代码出现在不同的上下文中,因此可以用来确定它是否重要的不是错误代码本身,而是上下文本身。