梦中江湖

世间一切皆为江湖,世间一切皆不为江湖。曾经年少,觉得一切皆是那么美好,世间事物一切皆可为我所有,天下之大皆我可往。有一种江湖的情结,豪情满胸。可是时间的流逝,年龄的增长,心中的江湖已经不在,现在江湖泛滥,唯有小酌入梦后,才能在梦中再见我的江湖!再见我的青春!

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  12 随笔 :: 0 文章 :: 15 评论 :: 0 Trackbacks

GetLastError是微软提供的一个检测错误的API。
1、原本以为GetLastError是针对进程的,还担心在多线程环境下导致获得错误代码不准确,因为正确执行的代码也可以改变错误代码,但是今天用心看了一下,发现GetLastError是针对线程的,错误代码号码是存储在线程本地存储器中的,即使多线程环境下的线程切换也不会改变它。呵呵,看样子看书还是要认真仔细啊。

2、GetLastError能获得错误代码号码,然后使用FormatMessage将其转换为相应的错误信息,这个很好,但是有多少人使用了微软提供的SetLastError呢?我们编写程序的时候,更多的是捕获了异常,然后处理、屏蔽之,虽然可以通过BOOL或者其他类型的函数返回值告诉调用者一些信息。但是一旦不能处理之,我们时候应该告诉调用者,相应的错误信息呢?更不要说是使用微软提供的方案定义自己的错误信息。

3、FormatMessage提供的能够通过参数确定显示的错误信息的语种的这种功能又是怎么实现的呢?如果说FormatMessage操作的是WinError.h文件,那么文件中的错误信息好像都是英文的,难道它能有精确的翻译机制?估计应该是OS中也有相关的错误信息的保存的地方。注意MAKELANGID。

4、线程的本地存储器机制让我们在使用VC调试器的时候可以在Watch窗口中直接输入"@err,hr",获得错误代码和错误信息,但是我使用了多少呢?


posted on 2005-06-20 09:06 梦中江湖 阅读(1508) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。