【发布时间】:2013-01-23 17:24:54
【问题描述】:
是否需要检查所有Win32 APIs 返回值?例如,AdjustWindowRect、SetWindowLong、GetWindowLong 等函数真的会失败(有内部错误),或者返回值主要是不输入错误参数的故障安全机制?
【问题讨论】:
-
每个 API 的故障模式以及如何检查都记录在 MSDN 中。你应该处理你能做的事情并失败/提高任何其他人。永远不要默默地放弃意想不到的结果。
-
@Deanna:但 MSDN 中很少记录故障情况和分类。没有记录在哪些情况下
SetWindowLong会导致ERROR_FILE_EXISTS(应该是“从不”)。 -
@Tinctorius 这属于“意外结果”,应该是放弃的理由,因为出现了您无法处理的问题。但是,您可以处理您期望的错误。
-
@Deanna:MSDN 上的文档没有为您提供预期的错误列表。因此,它是不完整的。仅仅猜测可能导致哪些错误是不够的。
-
@Tinctorius:你没有抓住重点。你不应该处理它可以通过的所有事情。您应该处理一些您期望的错误并且可以做一些事情(这个文件是只读的,磁盘空间不足等)MSDN 告诉您它如何报告它的错误,所以只需寻找您期望的错误。其他一切都应该是致命的和无法处理的。处理所有数十亿可能的错误代码是没有意义的,因为其中至少有数十亿是“出了问题”。
标签: winapi