回炉重造之重读Windows核心编程-001-错误处理
2024-09-06 17:27:34
Windows处理错误靠的是API的返回值,类型不止一种种:
- VOID,函数不可能失败,Windows API的返回值很少是这个情况。
- BOOL,如果函数失败,则返回值是0,否则返回是非零值。不要测试返回值是否为TRUE!
- HANDLE,如果函数失败,则返回值通常是NULL,否则返回一个HANDLE用于操作对象。有的函数是返回INVALID_HANDLE_VALUE的,它被定义为-1,以函数在文档中的说明为标准!
- PVOID,如果函数失败,则返回NULL,否则返回内存块的地址。
- LONG/DWORD,比较麻烦。某些情况下,函数无法对想要计数的对象计数,则返回值通常是0或者-1。为了处理潜在的错误,必须认真阅读SDK文档中的说明。
当Windows函数检测到一个错误的时候,会使用线程本地存储的机制,关联错误代码和调用函数的线程。这样就可以保证线程不会影响各自的错误代码。
而确定这个错误的方法就是调用GetLastError函数,它只返回一个DWORD类型的错误代码。
当你拥有这个错误代码后,必须将号码转化成更有用的对象,这里可以根据头文件WinError.h中定义的错误代码列表来处理。
示例程序可以参照VS的一个小工具Error Lookup。
最新文章
- ";_OBJC_CLASS_$_CMMotionManager";, referenced from:
- Hibernate组件映射
- Java时间的处理
- 图片Exif 信息中Orientation的理解和对此的处理
- JavaScrip之对象与继承
- IOS XML解析
- 视图合并、hash join连接列数据分布不均匀引发的惨案
- [转载]AxureRP常用快捷键
- js整理3
- Python单元测试框架之pytest -- 生成测试报告
- CSS------添加注释框
- GOOGLE搜索秘籍完全公开
- LeetCode Contains Duplicate (判断重复元素)
- TCP/IP详解学习笔记(1)-基本概念
- 非常不错的KPTimePicker效果源码
- java 泛型处理
- web标准(复习)--1
- 【Excel】Excel筛选迟点时间的公式
- Java数组的声明和遍历
- Python 利用Python操作excel表格之openyxl介绍Part1