从理论上讲,最终用户永远不会看到内部错误。但在实践中,理论和实践是不同的。所以问题是向最终用户展示什么。现在,对于完全非技术的用户,您希望尽可能少地显示(“单击此处提交错误报告”之类的东西),但对于更高级的用户,他们会想知道是否有解决方法,如果它已经知道了一段时间,等等。所以你想包括一些关于什么是错误的信息。
执行此操作的经典方法是使用文件名:行号的断言或具有相同的堆栈跟踪。现在这对开发人员来说是件好事,因为它把问题指向了他;但是它对用户来说有一些明显的缺点,特别是它非常神秘(例如不友好)并且代码更改会更改错误消息(谷歌搜索错误仅适用于此版本)。
我有一个程序,我正计划在我想解决这些问题的地方编写程序。我想要的是一种将唯一身份附加到每个断言的方法,这样编辑断言周围的代码不会改变它。(例如,如果我将它剪切/粘贴到另一个文件,我希望显示相同的信息)有什么想法吗?
我正在考虑的一种方法是对错误进行枚举,但是如何确保它们永远不会在多个地方使用呢?
(注意:对于这个问题,我只关注由编码错误引起的错误。而不是像错误输入这样可能合法发生的事情。OTOH 这些错误可能会引起整个社区的兴趣。)
(注 2:有问题的程序将是在用户系统上运行的命令行应用程序。但同样,这只是我的情况。)
(注 3:目标语言是D,我非常愿意深入研究元编程。非常欢迎其他语言的答案!)
(注 4:我明确不想使用实际的代码位置,而是使用某种符号名称来表示错误。这是因为如果代码以任何方式更改,代码位置也会发生变化。)