gpt4 book ai didi

error-handling - 内部错误标记

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

从理论上讲,最终用户不应该看到内部错误。但在实践中,理论和实践是不同的。所以问题是向最终用户展示什么。现在,对于完全没有技术的用户,您希望尽可能少地显示(“单击此处提交错误报告”之类的东西),但对于更高级的用户,他们会想知道是否有解决方法,如果它已经知道了一段时间,等等。所以你还想包括一些关于什么是错误的信息。

执行此操作的经典方法是带有文件名:行号的断言或具有相同的堆栈跟踪。现在这对开发人员来说是好事,因为这让他正确地指出了问题;但是它对用户来说有一些明显的缺点,特别是它非常神秘(例如不友好)并且代码更改会更改错误消息(谷歌搜索错误仅适用于此版本)。

我有一个程序,我打算在我想解决这些问题的地方编写它。我想要的是一种将唯一标识附加到每个断言的方法,这样编辑断言周围的代码就不会改变它。 (例如,如果我将其剪切/粘贴到另一个文件,我希望显示相同的信息)有什么想法吗?

我正在考虑的一种方法是对错误进行枚举,但是如何确保它们永远不会在一个以上的地方使用?

(注意:对于这个问题,我只关注由编码错误引起的错误。而不是像错误输入那样合法发生的事情。OTOH 这些错误可能对整个社区有一些兴趣。)

(注 2:有问题的程序将是在用户系统上运行的命令行应用程序。但同样,这只是我的情况。)

(注 3:目标语言是 DI'm very willing 深入了解 meta-programming 。非常欢迎其他语言的答案!)

(注意 4:我明确不想使用实际的代码位置,而是使用某种符号名称来表示错误。这是因为如果代码以任何方式更改,代码位置也会更改。)

最佳答案

有趣的问题。我多次使用的解决方案是这样的:如果是 fatal error (例如,非 fatal error 应该让用户有机会更正输入),我们会生成一个包含大量相关信息的文件:请求变量, header 、内部配置信息和用于以后调试的完整回溯。我们将其存储在具有生成的唯一文件名的文件中(并以时间作为前缀)。

对于用户,我们提供了一个页面,解释发生了不可恢复的错误,并要求他们包含文件名作为引用,如果他们想报告错误。从违规请求的上下文中使用所有这些信息进行调试要容易得多。

在 PHP 中,debug_backtrace() 函数对此非常有用。我相信你的平台有一个等价的。

还记得发送相关的 http header :可能:HTTP/1.1 500 Internal Server Error

给定错误报告文件的合理格式,还可以分析用户未报告的错误。

关于error-handling - 内部错误标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/318626/

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