Windows 函数错误处理
2010-05-05 22:50
190 查看
在涉入并检验微软Windows所能提供的许多特性之前,需要先理解各种Windows函数在错误处理方面的功能。
在调用Windows函数时,函数对传递给的参数进行有效性检验,然后再尝试完成他的工作。如果传递了一个无效参
数或者其他一些原因导致无法执行功能,函数的返回值指明了函数失败的原因。表1-1列出了多数Windows函数使
用的返回值数据类型。
表1-1.Windows函数常用返回类型
数据类型 指明失败类型的值
VOID 该函数不太可能失败,很少数Windows函数返回值类型为VOID
BOOL 如果函数失败,返回值为0;反之,返回值为非0。最好测试返回值是0或者非0,避免测试返回
值是否为TRUE。
HANDLE 如果函数失败,返回值通常为NULL,反之,HANDLE标识一个你可以操作的对象。使用它要小心
,因为一些函数返回句柄值INVALID_HANDLE_VALUE,该值定义为-1。针对各函数的平台SDK文档
会清楚的描述函数返回NULL或者INVALID_HANDLE_VALUE来表明失败。
PVOID 如果函数失败,返回值为NULL,反之,PVOID标识某数据块的内存地址。
LONG/DWORD 这是个棘手的问题,函数返回个数通常返回一个LONG或者DWORD值。如果某种情况下函数数不过
来你要数的事情,函数通常返回0或者-1(依函数不同而异)。如果要调用一个返回LONG/DWORD
值的函数,请详细阅读平台SDK文档来确保正确的检核潜在的错误。
当一个Windows函数返回时附带错误码,明白为什么函数失败通常非常有用。微软业已编译了一系列可能的错误码
并给每个错误码指定了一个32位的数值。
在内部,当一个Windows函数检测到一个错误时,他使用一个称作本地线程存储的机制来关联对应的错误码数值和
调用的线程(本地线程存储在第21章讨论)。他使得各线程各自独立运行而不影响各自的错误码。当函数返回给
你时,他的返回值将表明发生了一个错误。要明确的看到他是哪一个错误,调用以下GetLastError函数:
DWORD GetLastError();
该函数简单地返回线程的32位错误码。
既然有了32位错误码的值,就可以转换该值为更有用的信息。WinError.h头文件包含了微软定义的错误码列表。
在调用Windows函数时,函数对传递给的参数进行有效性检验,然后再尝试完成他的工作。如果传递了一个无效参
数或者其他一些原因导致无法执行功能,函数的返回值指明了函数失败的原因。表1-1列出了多数Windows函数使
用的返回值数据类型。
表1-1.Windows函数常用返回类型
数据类型 指明失败类型的值
VOID 该函数不太可能失败,很少数Windows函数返回值类型为VOID
BOOL 如果函数失败,返回值为0;反之,返回值为非0。最好测试返回值是0或者非0,避免测试返回
值是否为TRUE。
HANDLE 如果函数失败,返回值通常为NULL,反之,HANDLE标识一个你可以操作的对象。使用它要小心
,因为一些函数返回句柄值INVALID_HANDLE_VALUE,该值定义为-1。针对各函数的平台SDK文档
会清楚的描述函数返回NULL或者INVALID_HANDLE_VALUE来表明失败。
PVOID 如果函数失败,返回值为NULL,反之,PVOID标识某数据块的内存地址。
LONG/DWORD 这是个棘手的问题,函数返回个数通常返回一个LONG或者DWORD值。如果某种情况下函数数不过
来你要数的事情,函数通常返回0或者-1(依函数不同而异)。如果要调用一个返回LONG/DWORD
值的函数,请详细阅读平台SDK文档来确保正确的检核潜在的错误。
当一个Windows函数返回时附带错误码,明白为什么函数失败通常非常有用。微软业已编译了一系列可能的错误码
并给每个错误码指定了一个32位的数值。
在内部,当一个Windows函数检测到一个错误时,他使用一个称作本地线程存储的机制来关联对应的错误码数值和
调用的线程(本地线程存储在第21章讨论)。他使得各线程各自独立运行而不影响各自的错误码。当函数返回给
你时,他的返回值将表明发生了一个错误。要明确的看到他是哪一个错误,调用以下GetLastError函数:
DWORD GetLastError();
该函数简单地返回线程的32位错误码。
既然有了32位错误码的值,就可以转换该值为更有用的信息。WinError.h头文件包含了微软定义的错误码列表。
相关文章推荐
- Windows函数错误处理
- 函数错误处理二(总结自己windows编程核心)
- Windows函数错误处理
- Windows函数错误处理
- [导入]Windows函数错误处理
- Windows平台下函数返回错误的处理
- 函数错误处理一(总结自windows编程核心)
- windows下ORA-12560: TNS: 协议适配器错误处理办法
- windows下ORA-12560: TNS: 协议适配器错误处理办法
- chapter 1: windows错误处理
- CS0016: 未能写入输出文件“c:/WINDOWS/Microsoft.NET/***.dll”错误处理
- 《UNIX环境高级编程》 —— 错误处理函数
- 如何在 SQL Server 的存储过程和函数里进行错误处理
- Oracle中函数,过程和触发器等的错误异常处理
- windows下的错误代码处理
- Python3学习笔记06-循环设计、循环对象、函数对象、错误处理、动态类型
- operator new之错误处理函数new_handler
- PHP 的异常处理、错误的抛出及错误回调函数
- 走进windows编程的世界-----消息处理函数(3)
- 错误处理函数