标准化错误分类和处理
时间:2020-03-06 14:42:18 来源:igfitidea点击:
我需要标准化如何"优雅地"分类和处理错误/异常。
我目前使用一个过程,通过该过程将错误报告给传递错误号,严重性代码,位置信息和额外信息字符串的函数。如果错误是致命的并且应用程序应终止,则此函数返回boolean true,否则返回false。作为其过程的一部分,该功能除了向用户提供视觉反馈外,还记录某些严重性级别以上的文件到文件的错误。
错误编号索引了解释错误类型的字符串数组,例如:"文件访问","用户输入","线程创建","网络访问"等。严重性代码为0,1的二进制OR, 2或者4,0 =信息性,1 =用户重试,2 =无法完成,4 =无法继续。 location-info是模块和功能,Extra-info是参数和局部变量值。
我想将其变成一种标准的错误处理方式,可以将其放入库中并在所有应用程序中重复使用。我主要在Linux上使用C / C ++,但也希望将生成的库与其他语言/平台一起使用。
- 一个想法是扩展错误类型数组以指示给定严重性级别的某些默认行为,但是这是否应该成为所采取的措施并且不向用户提供任何选择?
- 或者:这种扩展应该是用户需要选择的选项的子数组吗?这样做的问题是,这些选项必然是与编程相关的通用选项,这些选项可能会完全使最终用户感到困惑。
- 或者:每个使用error-lib例程的应用程序都应该传递自己的错误或者默认行为数组-但这会违背库的目的...
- 或者:是否应在每个应用程序中处理严重性级别?
或者:我们有什么建议?我们如何处理错误?我该如何改善呢?
解决方案
处理错误的方式实际上取决于应用程序。Web应用程序具有与桌面应用程序不同的错误捕获机制,并且两者与异步消息传递系统都大不相同。
话虽这么说,错误处理的一种普遍做法是在可能的最低级别上对其进行处理。这通常表示应用程序层或者GUI。
我喜欢严重程度级别。也许我们可以拥有一个具有不同错误输出提供程序和严重性级别提供程序的可插入错误收集库。
输出提供程序可以包括logginProvider和IgnoreErrorsProvider之类的东西。
严重性提供程序可能是每个项目实施的,因为严重性级别通常由发生严重性的项目类型决定。 (例如,对于银行应用程序而言,网络连接问题比对于联系人管理系统而言更为严重)。