【发布时间】:2012-04-20 12:41:57
【问题描述】:
我正在编写一个需要良好错误处理的 C 程序。代码如下:
If(doWork("A")<0){
return -1;
}
If(doWork("B")<0){
undoWork("A");
return -1;
}
If(doWork("C")<0){
undoWork("A");
undoWork("B");
return -1;
}
return 0;
这段代码有效,但看起来很乱,尤其是我有一长串doWork(X) 可以调用。在这种情况下是否有更好、更简洁的方法来处理错误?
【问题讨论】:
-
有很多好的答案,但我能提供的最好的答案是与他们一起发表评论:无论你采取什么方法,你总是会尽量减少这样的丑陋,并通过最小化数量来最大化稳健性有失败案例的步骤。例如,预先计算您需要的内存量并在开始之前执行单个
malloc,而不是在每个步骤中分配少量内存,可以使许多具有复杂错误输出逻辑的任务变得简单。
标签: c error-handling