更新:这里的错误代码不是函数的返回值。实际上,我不是在讨论使用异常或错误代码来处理错误。我试图弄清楚,用什么模式来组织错误。我真正要做的是在Windows蓝屏上显示错误代码。回到很久以前,当您的Windows崩溃时,您可以在蓝色屏幕上获得一个错误代码,使用该代码,您可以通过查找MS的文档来了解发生了什么。在我的系统中,有许多插件是由不同的人贡献的,他们可能不认识对方。如果我允许他们定义错误代码。这主要是因为两个插件的错误代码可能会与冲突。
================================================================================================
我想设计一个可扩展的错误代码系统,允许插件定义自己的错误代码。其基本思想是:
这一要求有什么好的做法吗?我搜索了很多,但令我惊讶的是,很少有文章讨论在生产软件中设计错误代码。大多数文章都集中在异常和错误代码上。
还有,有什么好的模式来显示错误的产品,用户可以知道是怎么回事?我的基本想法是向用户展示一个错误,错误代码,描述,细节。用户可以单击错误代码,然后我将向他展示正确的解决方案。
发布于 2013-04-25 19:01:40
不知道你正在构建的插件系统做什么..。
向主机应用程序提供这些信息难道不是插件的责任吗?为什么不让在插件上执行一个操作的结果包含这些项呢?这样,您的主机应用程序就不关心插件特定的实现细节,只关心某些事情是否正常.
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
};所以每次调用插件都是这样的:
OperationResponse r = plugin.DoOperation();
if (r.code != OP_SUCCESS) {
// do something with r.message and other fields
}发布于 2013-04-25 20:59:53
对于应用程序将其插入数据库的每一个异常,错误代码都是该记录的id,这就是用户所看到的。显然,相同的异常得到相同的id。所需的插件信息存储在DB中。
https://stackoverflow.com/questions/16222064
复制相似问题