首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义每个类的错误代码的利弊是什么?

定义每个类的错误代码的利弊是什么?
EN

Stack Overflow用户
提问于 2009-05-28 06:09:45
回答 4查看 293关注 0票数 0

在创建模块的过程中,我面临着一个进退两难的境地:每个类应该在内部定义自己的错误代码,还是应该定义一个模块范围的错误代码?

到目前为止,利弊齐头并进,但我倾向于定义每个类的错误:

1:

代码语言:javascript
复制
class MyClass
{
public:       
   typedef enum _TResult {
       EOk = 0,
       EErrNoMemory,
       EErrBadParam,
       <...>
   } TResult;

   TResult DoSomething();
};

而不是像这样的东西:

2-1:

代码语言:javascript
复制
#define OK              (0)
#define ERR_NO_MEMORY   (1)
#define ERR_BAD_PARAM   (2)

或者:

2-2:

代码语言:javascript
复制
typedef enum _TResult
{
    EOk,
    EErrNoMemory,
    EErrBadParam,
    <...>
    EErrTimeOut,
    EErrFeedThePenguin
} TResult;

根据你的经验,任何一种方法的陷阱是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-28 06:32:19

关于每个类的错误代码,我要评论的一件事是,由于相同的代码将根据类的不同表示不同的事情,因此您无法编写单个错误记录器(或者至少不容易)。

也就是说,您总是可以同时使用这两种方法。有一个带有常见错误的全局枚举:

代码语言:javascript
复制
enum GlobalErrors {
   EOk = 0,
   EErrOutOfMemory,
   // etc.
   EFreeErrorCodeBase
};

然后在类中,你可以有:

代码语言:javascript
复制
class Something {
    enum ClassErrors {
       EErrCantInitialize = EFreeErrorCodeBase,
       EErrCorruptedData,
       // etc.
    };
...
};

这为您提供了存放全局错误代码的位置,并确保您的类错误代码不会与全局错误代码重叠(这是由编译器维护的)。

票数 3
EN

Stack Overflow用户

发布于 2009-05-28 06:14:54

我认为这取决于你希望你的用户如何使用系统。如果您有对多个类有意义的错误代码,那么将它们放在一个“全局”级别上是有意义的,以某种组织良好的格式(例如,按概念分组的错误代码)。如果您的类都返回自己的自定义错误代码,我会更多地在类级别定义它们。

票数 0
EN

Stack Overflow用户

发布于 2009-05-28 06:15:14

如果您需要来自其他类的相同错误代码,则分别定义它们。你需要提前做一点计划。您现在可能不需要它们,但将来可能会创建一个需要类似或相同错误代码的类。

否则,最好将它们放在同一个类中。这将有助于源和错误代码的维护。这也将使阅读和理解代码变得更容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/919401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档