gpt4 book ai didi

language-agnostic - 代码应该在多大程度上尝试解释致命异常?

转载 作者:行者123 更新时间:2023-12-04 07:47:14 25 4
gpt4 key购买 nike

我怀疑所有重要的软件都可能遇到遇到无法解决的外部问题并因此需要失败的情况。这可能是由于配置错误、外部服务器关闭、磁盘已满等原因。

在这些情况下,特别是如果软件在非交互模式下运行,我希望真正能做的就是记录错误并等待管理员阅读日志并修复问题。如果有人在此期间碰巧与软件交互,例如请求进入无法正确初始化的服务器,然后可能会给出适当的提示来检查日志,甚至可能会回显错误(取决于您是否可以判断他们是否是技术人员而不是商业用户)。不过,我们暂时不要想太多这部分。

我的问题是,软件应该在多大程度上负责尝试解释 fatal error 的含义?一般来说,您可以假定软件管理员有多少能力/知识,以及在记录 fatal error 时您应该包含多少故障排除信息和潜在的解决步骤?当然,如果运行时上下文有一些独特的东西,那么肯定应该记录下来;但假设您的软件需要通过 LDAP 与 Active Directory 通信并返回错误“[LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 525, vece]”。假设维护人员能够通过谷歌搜索错误代码并弄清楚它的含义是否合理,或者软件是否应该尝试解析错误代码并记录这是由不正确的用户引起的LDAP 配置中的 DN?

我不知道是否有明确的最佳实践答案,所以我很想听听各种观点。

最佳答案

我倾向于同意的方法是,如果 fatal error 是由您自己负责的某些代码(即不是第三方)引起的,您应该尽可能多地解释。否则,如果错误是由“进一步向下”引起的,例如在数据库级别,那么管理员应该向上传递返回的错误,而无需添加更多进一步的信息。所以如果数据库服务器死了,那么你的连接器会抛出一些异常,你会在异常中记录错误代码。

然后,管理员或支持人员应该具备足够的知识来使用所提供的信息解决问题。

如果您确实提供了太多并非由您自己的代码引起的错误的详细信息,您将面临错误详细信息与实际错误原因不匹配的风险,尤其是当错误代码在版本之间停止匹配时。

当然,也有异常(exception)。我们使用的开源库文档记录很差,以至于我们最终围绕这些库编写了包装器,只是为了提供对实际情况的良好记录。

只是我的 2c

关于language-agnostic - 代码应该在多大程度上尝试解释致命异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/565077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com