如何避免枚举值冲突?

缺口

我正在建立一个前端库。后端产生许多错误代码,这些错误代码被枚举:

enum backerr {BACK_ERR1, BACK_ERR2, BACK_ERR3};

我的前端会产生许多其他错误代码:

enum fronterr {FRONT_ERR1, FRONT_ERR2, FRONT_ERR3};

为了方便起见,我希望有一个错误代码返回函数,该函数将根据发生的错误返回前端或后端错误。

在没有两个错误代码的值冲突的情况下,并且考虑到我们不知道后端的值,有什么办法可以发生?

紫罗兰色

如果您不知道后端可能产生什么,那么不会,没有办法可靠地选择您自己的错误代码,以免它们冲突。

因此,您有两个选择(至少)。

如果后端以某种方式发布错误范围(例如在头文件中),则第一个很有用。老实说,应该这样做是因为程序没有其他方法可以区分不同的错误代码和/或类型。

如果他们公布,这是一个简单的事情等待你去发掘最高和选择自己的代码,以留下足够的空间,后端扩大。例如,如果后端使用1..100,则从开始1000任何系统突然报告错误的机率是以前版本的十倍,这是一个很小的机会。

第二种方法是,如果您希望真正的分离而冲突的可能性为零。

没有什么可以阻止您返回类似于以下内容的结构:

struct sFrontError {
    enum fronterr errorCode;
    enum backerr  backendCode;
};

并将其用于您的错误。然后,您对前端的枚举变为:

enum fronterr {FRONT_OK, FRONT_BACK, FRONT_ERR1, FRONT_ERR2, FRONT_ERR3};

您可以按以下方式对其进行评估:

  • 如果errorCodeFRONT_OK,则没有错误。
  • 如果errorCodeFRONT_BACK,则错误来自后端,您可以在中找到其代码backendCode
  • 否则,这是一个前端错误,并且代码中errorCode完全指定了该错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何避免枚举值冲突?

来自分类Dev

如何避免不可能的枚举值?

来自分类Dev

如何避免类名冲突?

来自分类Dev

Git如何避免合并冲突?

来自分类Dev

如何避免Laravel中的列名冲突?

来自分类Dev

如何避免合并冲突引起的拉动?

来自分类Dev

如何避免python Tkinter中的键盘冲突?

来自分类Dev

如何在Maxima中避免名称冲突

来自分类Dev

如何使用jQuery避免CSS冲突?

来自分类Dev

如何避免与ArangoDB中的AQL冲突?

来自分类Dev

如何避免CSS类名称的名称冲突

来自分类Dev

如何避免IPFS DNSLINK发生名称冲突?

来自分类Dev

如何命令Cronjobs避免重叠或冲突

来自分类Dev

如何避免crc16冲突?

来自分类Dev

元素已知时如何避免哈希冲突

来自分类Dev

如何避免CSS类名称的名称冲突

来自分类Dev

Scala Cake模式:如何避免依赖冲突?

来自分类Dev

Linux 头文件中如何避免冲突?

来自分类Dev

如何使用枚举值?

来自分类Dev

多维枚举,如何避免代码宏生成

来自分类Dev

如何避免使用枚举进行反射

来自分类Dev

如何获得枚举值的值?

来自分类Dev

如何获得枚举值的值?

来自分类Dev

如何避免重复值?

来自分类Dev

避免与C中的枚举发生名称冲突(C99)

来自分类Dev

如何比较NSPersistentStoreUbiquitousTransitionType枚举值

来自分类Dev

如何选择随机枚举值

来自分类Dev

如何更改枚举可能的值

来自分类Dev

如何读取JavaScript枚举值