【发布时间】:2012-04-26 20:18:49
【问题描述】:
有时当我使用 C++/C 编程时,我最终会多次调用同一个函数,我想知道检查所有这些调用的错误的最有效方法是什么?使用if else 语句会占用大量代码并且看起来很难看。我想出了自己检查错误的方法,也许有更好的方法可以使用。
int errs[5] = {0};
errs[0] = functiona(...);
errs[1] = functiona(...);
...
errs[5] = functiona(...);
for (int i = 0; i < 5; i++)
{
if (err[i] == 0)
MAYDAY!_wehaveanerror();
}
注意:我知道使用 try 和 catch 对于 C++ 可能会更好,因为它会通过在第一个错误时抛出异常来解决这个问题,但问题是它与很多不兼容返回错误代码的函数,例如 Windows API。谢谢!
【问题讨论】:
-
为什么您不想在发生错误时尽快知道,并在收到时检查每个返回码?使用您的方法,您可能会产生一系列错误,并且只会找出第一个错误。
-
迭代您将传递的参数列表,使用该迭代的参数调用函数,在第一次检测到错误时将“我们有错误”布尔设置为 true,然后终止循环那时和那里。
-
另外:仅仅因为Windows API函数只返回错误代码并不意味着你不能在收到错误代码时抛出。
-
@ScottHunter 我想这样做,这就是为什么我要问我的问题是如何找到一种巧妙的方法来做到这一点。我的代码调用相同的函数
GetPrivateProfileStringA大约 40 次来加载我的程序的设置。这意味着有 40 个if语句和 40 个then语句加上非常丑陋的处理程序。 -
@user99545:注意:提供此功能只是为了与基于 Windows 的 16 位应用程序兼容。应用程序应在注册表中存储初始化信息。
标签: c++ c recursion error-handling