首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设计可扩展的错误代码?

如何设计可扩展的错误代码?
EN

Stack Overflow用户
提问于 2013-04-25 18:28:30
回答 2查看 864关注 0票数 1

更新:这里的错误代码不是函数的返回值。实际上,我不是在讨论使用异常或错误代码来处理错误。我试图弄清楚,用什么模式来组织错误。我真正要做的是在Windows蓝屏上显示错误代码。回到很久以前,当您的Windows崩溃时,您可以在蓝色屏幕上获得一个错误代码,使用该代码,您可以通过查找MS的文档来了解发生了什么。在我的系统中,有许多插件是由不同的人贡献的,他们可能不认识对方。如果我允许他们定义错误代码。这主要是因为两个插件的错误代码可能会与冲突。

================================================================================================

我想设计一个可扩展的错误代码系统,允许插件定义自己的错误代码。其基本思想是:

  1. 系统有一系列保留错误代码。
  2. 插件可以选择系统不使用的范围,然后在该范围内创建错误代码。然而,问题是插件之间并不认识(因为插件可能由不同的人编写,并根据用户的喜好安装到系统中)。因此,它们的误码范围可能会发生冲突。

这一要求有什么好的做法吗?我搜索了很多,但令我惊讶的是,很少有文章讨论在生产软件中设计错误代码。大多数文章都集中在异常和错误代码上。

还有,有什么好的模式来显示错误的产品,用户可以知道是怎么回事?我的基本想法是向用户展示一个错误,错误代码,描述,细节。用户可以单击错误代码,然后我将向他展示正确的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2013-04-25 19:01:40

不知道你正在构建的插件系统做什么..。

向主机应用程序提供这些信息难道不是插件的责任吗?为什么不让在插件上执行一个操作的结果包含这些项呢?这样,您的主机应用程序就不关心插件特定的实现细节,只关心某些事情是否正常.

代码语言:javascript
运行
复制
const int OP_SUCCESS = 0;

// structure returned for plugin ops
struct OperationResponse {
    int code; // any other value than OP_SUCCESS is plugin-defined
    string message; // operation optional message, even if success
    // other fields
};

所以每次调用插件都是这样的:

代码语言:javascript
运行
复制
OperationResponse r = plugin.DoOperation();

if (r.code != OP_SUCCESS) {
    // do something with r.message and other fields
}
票数 0
EN

Stack Overflow用户

发布于 2013-04-25 20:59:53

对于应用程序将其插入数据库的每一个异常,错误代码都是该记录的id,这就是用户所看到的。显然,相同的异常得到相同的id。所需的插件信息存储在DB中。

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

https://stackoverflow.com/questions/16222064

复制
相关文章

相似问题

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