返回错误的首选方式是什么?

时间:2019-04-20 17:01:58

标签: c error-handling api-design

我一直坚持为我图书馆的公共API中的函数提供错误处理工具。例如,我有一些queue和一个get_data,而函数typedef struct data_source data_source; typedef struct queue queue; /** * Returns: * 0 - on success * -1 - on data source failure * -2 - on queue overflow */ int get_data(data_source *ds, queue *queue); 的外观为:

POSIX

但是查看errno的errno方法时,他们使用返回类型表示发生了某些错误,并使用errno设置了错误代码。我不确定将/** * Returns: * 0 - on success * -1 - on error and error_code is set to * 1 - if queue overflow occurs * 2 - if data source failure detected */ int get_data(data_source *ds, queue *queue, int *error_code); 用于我的库API是否是一个不错的选择,但是考虑到这一点,我将如下设计函数:

<mat-sidenav #snav [mode]="'push'">
   <mat-nav-list>
      <a *ngFor="let mnu of menus" mat-list-item [routerLink]="['/mnu']">{{mnu}}<\a>
   <\mat-nav-list>
<\mat-sidenav>

用于错误处理的第二种示例方法(比第一种方法更常见吗?)?

1 个答案:

答案 0 :(得分:2)

errno是errno.h中的宏。

将其视为系统或库可能设置为某种外部变量。即这不是您的lib函数的参数,而是全局int。

如果您要使用返回值作为错误代码或使用errno,完全由您决定。