函数错误处理一(总结自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,通过它,我们输入错误友就可以看到
错误的描述。具体可参考图二。
*/
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,通过它,我们输入错误友就可以看到
错误的描述。具体可参考图二。
*/
相关文章推荐
- 函数错误处理二(总结自己windows编程核心)
- Windows游戏编程总结(一)图形处理中的几个函数
- 【Windows 核心编程】Windows 核心编程 -- 错误处理
- windows 核心编程之 错误处理 -----学习笔记
- Windows核心编程-错误处理
- Windows核心编程--错误处理/字符/字符串
- windows核心编程--函数返回错误
- 读Windows核心编程-1-错误处理
- [Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别
- WINDOWS核心编程学习笔记--字符串处理
- 走进windows编程的世界-----消息处理函数(1)
- Windows核心编程----处理结构化异常处理(SEH)和C++提供的异常处理不相同
- [Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别
- 基于visual c++之windows核心编程代码分析(44)监测任意程序函数起始地址
- Linux下的C语言编程——错误处理函数
- 走进windows编程的世界-----消息处理函数(2)
- C++与opencv的一些编程和函数的使用错误总结
- [Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别
- 基于visual c++之windows核心编程代码分析(44)监测任意程序函数起始地址
- PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()