我正在建立一个前端库。后端产生许多错误代码,这些错误代码被枚举:
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};
您可以按以下方式对其进行评估:
errorCode
为FRONT_OK
,则没有错误。errorCode
是FRONT_BACK
,则错误来自后端,您可以在中找到其代码backendCode
。errorCode
完全指定了该错误。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句