java - 如何设计可扩展的错误码?

标签 java python design-patterns error-handling software-design

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

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

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

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

对于这个要求有什么好的做法吗?我用谷歌搜索了很多,但令我惊讶的是,很少有文章讨论在生产软件中设计错误代码。大多数帖子都关注异常与错误代码。

并且,是否有任何好的模式来显示产品中的错误,以便用户可以弄清楚发生了什么? 我的基本想法是向用户显示一个错误,其中包含错误代码、描述和详细信息。用户可以单击错误代码,然后我会向他展示正确的解决方案

最佳答案

不知道您正在构建的插件系统的作用......

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

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/

相关文章:

c# - 命令模式 : Any point in OOP? 的丑陋体验

java - Android 中无需本地化的多语言功能,但可通过按钮实现

java - 为什么我的 SwingWorker 不工作?

java - 将视频和变量上传到服务器?

python - Pandas Groupby Dates,然后是 Group 的 Cumprod?

python - 为什么我在python3中的代码测试无法通过?

python - Numpy Softmax - 具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()

oop - 这种设计模式的名称?

java - 用 HTML 元素替换字符串

c# - 过滤选项的设计模式推荐