我需要标准化如何“优雅地”分类和处理错误/异常。

我目前使用的流程是向函数报告错误,并传递错误号、严重性代码、位置信息和额外信息字符串。如果错误是致命的并且应用程序应该终止,则此函数返回布尔值 true,否则返回 false。作为其过程的一部分,除了向用户提供视觉反馈之外,该功能还将高于某个严重级别的错误记录到文件中。

错误号索引解释错误类型的字符串数组,例如:“文件访问”、“用户输入”、“线程创建”、“网络访问”等。严重性代码是 0、1、2 或 4 的二进制 OR,0=信息性,1=用户重试,2=cannot_complete,4=cannot_continue。Location-info 是模块和函数,Extra-info 是参数和局部变量值。

我想将其变成一种标准的错误处理方式,我可以将其放入库中并在我的所有应用程序中重复使用。我主要在 Linux 上使用 C/C++,但也希望将生成的库与其他语言/平台一起使用。

  • 一个想法是扩展错误类型数组以指示给定严重性级别的某些默认行为,但是这是否应该成为采取的动作并没有给用户提供任何选择?

  • 或者:这样的扩展名应该是用户需要选择的选项的子阵列吗?问题在于,与编程相关的选项的必要性可能完全使最终用户感到困惑。

  • 或者:如果每个使用错误lib例程的应用程序都沿其自己的错误或默认行为的数组通过 - 但这将破坏库的目的...

  • 或者:是否应该在每个应用程序中处理严重性级别?

或者:你有什么建议?你如何处理错误?我该如何改进这个?

有帮助吗?

解决方案

如何处理错误实际上取决于应用程序。Web 应用程序具有与桌面应用程序不同的错误捕获机制,并且这两者都与异步消息传递系统有很大不同。

话虽这么说,错误处理的常见做法是在可以处理的尽可能低的级别上进行处理。这通常意味着应用程序层或 GUI。

我喜欢严重程度。也许您可以拥有一个可插入的错误收集库,其中包含不同的错误输出提供程序和严重性级别提供程序。

输出提供程序可以包括 logginProvider 和 IgnoreErrorsProvider 等内容。严重性提供程序可能是由每个项目实现的,因为严重性级别通常由其发生的项目类型决定。(例如,银行应用程序的网络连接问题比联系人管理系统更严重)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top