从GetLastError想到的

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值