4

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

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

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

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

  • 一个想法是扩展错误类型数组以指示给定严重级别的某些默认行为,但这是否应该成为所采取的操作并且不给用户选项?

  • 或者:这样的扩展是否应该是用户需要从中选择的选项的子数组?这样做的问题是,这些选项必须是通用的与编程相关的选项,这可能会完全让最终用户感到困惑。

  • 或者:每个使用 error-lib 例程的应用程序是否应该传递自己的错误或默认行为数组 - 但这会破坏库的目的......

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

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

4

1 回答 1

1

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

That being said the a common practice in error handling is to handle it at the lowest possible level where it can be dealt with. This usually means the Application Layer or the GUI.

I like the severity levels. Perhaps you can have a pluggable Error-collection library with different error output providers and severity level provider.

Output providers could include things like a logginProvider and IgnoreErrorsProvider. Severity providers would probably be something implemented by each project since severity levels are usually determined by that type of project in which it occurs. (For example, network connection issues are more severe for a banking application than for a contact management system).

于 2008-09-25T16:02:00.450 回答