您的位置:首页 > 编程语言

函数错误处理一(总结自windows编程核心)

2008-09-02 15:27 387 查看
/*

Error Handling Part 1

当我们调用Windows函数的时候,函数会验证我们给它传递的参数,如果参数不

正确或由于其它一些原因函数没能正确执行,则函数会以返回值的形式告诉调用

者函数出错了。

常见的返回值:

VOID:

这种函数值说明函数不可能出错,只有极少数的Windows函数不会出错。

BOOL:

函数失败时返回0,成功时返回非0。所以我们检查函数是否成功时要避免

看返回值是否等于TRUE,而是要看返回值是否不等于FALSE。

HANDLE:

失败时通常为NULL,否则就返回一个我们可以使用对象的句柄。

需要注意的是,有些函数会返回INVALID_HANDLE_VALUE即-1,对于这种情况,

需要查看MSDN以确定是NULL代表失败还是INVALID_HANDLE_VALUE代表失败。

PVOID:

失败时返回NULL,否则就返回一个数据块的内存地址。

LONG/DWORD:

这类返回值比较严格。函数的作用一般是检查指定对象的数目。由于一些原因,

如果函数不能检查出指定对象的具体数目,则通常会返回0或-1,此时我们

就需要查看资料以明确哪种方式代表函数执行失败。

*/

//////////////////////////////////////////////////////////////////////////

// MessageId: ERROR_INVALID_FUNCTION

//

// MessageText:

//

// Incorrect function.

//

#define ERROR_INVALID_FUNCTION 1L // dderror

//////////////////////////////////////////////////////////////////////////

/*

如果函数失败而我们也想知道失败的原因,可以在失败的函数后立即调用函数

GetLastError,记住是立即调用,不然如果你在期间又调用了其它函数,失败

函数的错误码可能会被覆盖。

一个错误码的格式如上所示,其由三部分组成,一个标识符,一个英文描述和

一个数值。

GetLastError不仅可以告诉编程人员函数出错的原因,而且也可以告诉编程人员

函数成功执行的原因,因为一个函数的成功执行可能是由多个原因中的一个导致

的。这时候我们调用GetLastError,它就会给我们返回成功的具体原因。

*/

/*

在调试代码的时候,我们可以配置Visual Studio时刻显示当前线程的最后错误码

及其描述,配置方式就是调用窗口的Watch窗口中的任一行输入$err,hr,具体效果

可参考图一。

另外,VS也提供了一个小功能Error Lookup,通过它,我们输入错误友就可以看到

错误的描述。具体可参考图二。

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: