Windows编程中的错误处理

本文介绍在Windows编程中如何通过返回值获取错误信息,并提供了获取错误代码和显示错误信息的方法。通过使用`GetLastError`、`FormatMessage`等API函数,开发者可以有效地处理程序中的异常情况,提高代码的稳定性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows编程中获得错误信息

在windows编程中我们的函数往往不如我们想象的那样工作,他经常会出现很多这样那样的问题,一般情况下,我们可以通过他们的返回值来得到他们到底是否发了小脾气:

Windows常见的返回值类 型:
1) VOID:表明该函数运行不可能失败,Windows函 数的返回值很少是VOID。
2) BOOL:如果函数运行失败,返回值是0,否则 返回值是非0值。最好对返回值进行测试,以确定它是0还 是非0,而不是测试返回值是否是TRUE。
3) HANDLE:如果函数运行失败,则返回值通常是NULL, 否则返回值是某个HANDLE,用于标识你可以操作的一个对象。请注意这些值,有些函数失败时会返回一个句柄值INVALID_HANDLE_VALUE, 它被定义为-1。函数的Platform SDK文 档将会清楚地说明函数运行失败时返回值是NULL还是INVALID_HANDLE_VALUE。
4) PVOID:如果函数运行失败,返回值是NULL, 否则返回PVOID,以标识数据块的内存地址。
5) LONG/DWORD:这是个难以处理的值。返回数量的函数通常返回LONG或DWORD,如果由于某种原因,函数无法对想要进行计数的对象进行计数,那么该函数通常返回0或-1(根据函数而定)。如果调用的函数返回值为LONG或DWORD,那么得阅读Platform SDK以确保能正确检测潜在的错误。

由此可见,得到错误信息对我们修改程序帮助很大,如何获取这些错误信息呢。其实非常简单,windows为我们提供了3个API函数,我们可以使用他们来获取错误信息。

DWORD WINAPI GetLastError(void);,他的作用是获取由系统API产生的错误代码,代码的详细信息可参考MSDN或是微软公布的错误代码获取API的错误信息,
   当然,我们也可以直接让他显示出错误信息,如何操作呢,这就用到下面的函数

 具体信息可参看
MSDN
.

上对他的说明这里我们使用一个简单的例子来说明他们的用法 :

 

这里是动态加载DLL,如果成功,后面代码将正确执行,如果错误,将返回错误信息的详细说明。其中,后面一部分代码可以直接使用,把他加入你的代码调用API可能出错的地方,他将给你提示出你的函数错误的描述信息。

假设我们想要在自己代码中自定义错误信息,这是允许的,你可以使用

 

 

DWORD dwErrCode 就是你想要设置的错误代码,不过要注意的是,你的错误代码不能和系统冲突,下面是系统已经定义的错误代码字段信息:

31~30

29

28

27~16

15~0

内容

严重性

Microsoft/客户

保留

Facility代码

异常代码

含义

0=成功

1=供参考

2=警告

3=错误

0=Microsoft定义的代码

1=客户定义的代码

必须是0

前256个值由Microsoft保留

Microsoft/客户定义的代码

对于这两个函数的具体使用和这些字段的用法,请看下集故事:windows编程中的异常处理和windows结构化异常处理方式解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值