【发布时间】:2022-01-13 17:50:53
【问题描述】:
我最近一直在提高我的 C 编程能力,但我遇到了如何最好地处理错误的问题。我目前的方法是为给定的操作定义一些错误enum,例如:
typedef struct {
err_not_an_error=0,
err2,
err3,
...
} error_class_err_t
并且让该操作的所有函数返回 error_class,通过引用返回它们的值,例如 error_class_err_t function(return_type* return,...)。
这将涉及调用函数:
return_type output;
if (err=function(&output,...))
handle_error(err);
这适用于单个错误类,但对于多个错误类变得相当麻烦。我很好奇这种功能的最佳模式是什么。
【问题讨论】:
-
为什么需要多个错误类?我问是因为这相当接近行业标准方法,并且您拥有多个课程的意图可能在答案中发挥了不错的作用。您是否正在考虑同一个库中的 2 个函数返回不同的错误,或者您是否正在考虑像 C++ 异常一样的错误层次结构
-
returning their value by reference, e.g., error_class_err_t function...嗯,这不是参考。这是价值回报。 -
@CortAmmon 好吧,如果我有多个库有不同的错误,你会想要区分不同的错误类型,除非我误解了
-
@KamilCuk 我指的是使用
output,而不是错误代码,我很抱歉。
标签: c error-handling