Windows处理错误靠的是API的返回值,类型不止一种种:

  1. VOID,函数不可能失败,Windows API的返回值很少是这个情况。
  2. BOOL,如果函数失败,则返回值是0,否则返回是非零值。不要测试返回值是否为TRUE
  3. HANDLE,如果函数失败,则返回值通常是NULL,否则返回一个HANDLE用于操作对象。有的函数是返回INVALID_HANDLE_VALUE的,它被定义为-1,以函数在文档中的说明为标准!
  4. PVOID,如果函数失败,则返回NULL,否则返回内存块的地址。
  5. LONG/DWORD,比较麻烦。某些情况下,函数无法对想要计数的对象计数,则返回值通常是0或者-1。为了处理潜在的错误,必须认真阅读SDK文档中的说明。

  当Windows函数检测到一个错误的时候,会使用线程本地存储的机制,关联错误代码和调用函数的线程。这样就可以保证线程不会影响各自的错误代码。

  而确定这个错误的方法就是调用GetLastError函数,它只返回一个DWORD类型的错误代码。

  当你拥有这个错误代码后,必须将号码转化成更有用的对象,这里可以根据头文件WinError.h中定义的错误代码列表来处理。

  示例程序可以参照VS的一个小工具Error Lookup。

最新文章

  1. "_OBJC_CLASS_$_CMMotionManager", referenced from:
  2. Hibernate组件映射
  3. Java时间的处理
  4. 图片Exif 信息中Orientation的理解和对此的处理
  5. JavaScrip之对象与继承
  6. IOS XML解析
  7. 视图合并、hash join连接列数据分布不均匀引发的惨案
  8. [转载]AxureRP常用快捷键
  9. js整理3
  10. Python单元测试框架之pytest -- 生成测试报告
  11. CSS------添加注释框
  12. GOOGLE搜索秘籍完全公开
  13. LeetCode Contains Duplicate (判断重复元素)
  14. TCP/IP详解学习笔记(1)-基本概念
  15. 非常不错的KPTimePicker效果源码
  16. java 泛型处理
  17. web标准(复习)--1
  18. 【Excel】Excel筛选迟点时间的公式
  19. Java数组的声明和遍历
  20. Python 利用Python操作excel表格之openyxl介绍Part1

热门文章

  1. 基于快排思想的第(前)k大(小)
  2. springBoot 整合 dubbo 遇到的坑
  3. spring cloud oauth2搭建认证中心与资源中心
  4. mysql 记录一次内存清理
  5. 聊聊CMDB的前世今生
  6. Rust学习笔记一 数据类型
  7. 检测并移除WMI持久化后门
  8. CNN中的feature map
  9. Nginx 主要应用场景
  10. WebSocket协议分析