更新: 这里的错误代码不是函数的返回值。实际上我并不是在讨论使用异常或错误代码进行错误处理。我试图弄清楚,使用什么模式来组织错误。 我真正做的就像 Windows 蓝屏上显示的错误代码。回到很早以前,当您的 Windows 崩溃时,您可以在蓝屏上收到错误代码,使用该代码您可以通过查找 MS 的文档来了解发生了什么情况。 在我的系统中,有许多由不同的人贡献的插件,这些人可能彼此不认识。如果我允许他们定义他们的错误代码。主要是两个插件的错误代码可能冲突。
================================================== ===================================================
我想设计一个可扩展的错误代码系统,允许插件定义自己的错误代码。 基本思想是:
- 系统有一系列保留的错误代码
- 插件可以选择系统未使用的范围,然后在该范围内创建其错误代码。然而,问题是插件彼此不认识(因为插件可能由不同的人编写并根据用户的偏好安装到系统中)。因此它们的错误代码范围可能会发生冲突。
对于这个要求有什么好的做法吗?我用谷歌搜索了很多,但令我惊讶的是,很少有文章讨论在生产软件中设计错误代码。大多数帖子都关注异常与错误代码。
并且,是否有任何好的模式来显示产品中的错误,以便用户可以弄清楚发生了什么? 我的基本想法是向用户显示一个错误,其中包含错误代码、描述和详细信息。用户可以单击错误代码,然后我会向他展示正确的解决方案
最佳答案
不知道您正在构建的插件系统的作用......
插件不应该有责任向主机应用程序提供此信息吗?为什么不让插件执行操作的结果包含这些项目呢?这样你的主机应用程序就不会关心插件特定的实现细节,只关心某些事情是否正常......
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
}
关于java - 如何设计可扩展的错误码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222064/