![]() |
1
1
编写一个脚本来grep您的整个源代码树以使用这些错误代码,然后抱怨是否有重复的代码。作为单元测试的一部分运行该脚本。 |
![]() |
2
2
有趣的问题。我多次使用的一个解决方案是:如果这是一个致命错误(例如,非致命错误应该给用户纠正输入的机会),我们将生成一个包含大量相关信息的文件:请求变量、头、内部配置信息和完整的回溯信息,以备以后调试。我们将其存储在一个文件中,该文件具有生成的唯一文件名(并以时间作为前缀)。 对于用户,我们提供了一个页面,解释发生了一个不可恢复的错误,并要求他们包含文件名作为参考,如果他们想报告错误。使用来自冲突请求上下文的所有这些信息进行调试要容易得多。 在PHP中,debug_backtrace()函数对此非常有用。我相信有一个和你的平台相当的平台。 还要记住发送相关的HTTP头:可能是:HTTP/1.1500内部服务器错误 考虑到错误报告文件的合理格式,还可以分析用户未报告的错误。 |
![]() |
3
1
我对你的目标语言一无所知,但这是一个有趣的问题,我已经考虑过了,我想加上我的两分钱。 我一直认为,对于开发人员来说,针对硬错误和内部错误的消息应该是尽可能有用的,以便快速识别和修复问题。大多数用户甚至不会看到这个错误消息,但是高度复杂的最终用户(可能是技术支持人员)通常会非常清楚问题所在,甚至通过查看高度详细的错误消息来提出新的解决方法。关键是要让这些错误信息详细而不含糊,这不仅仅是一门科学,更是一门艺术。 使用进程外COM服务器的Windows程序示例。如果主程序尝试从COM服务器实例化对象,但失败并显示错误消息:
99%的用户会看到并认为它是用希腊语写的。技术支持人员可能会很快意识到他们需要重新注册COM服务器。开发人员会知道到底出了什么问题。 为了将一些上下文信息与断言相关联,在我的C++代码中,我经常使用一个简单的字符串,用该方法的名称,或者其他明确的错误发生的地方(我用你没有问的语言回答):
…产生:
|
![]() |
driver · 使用ggplot R绘制热图 2 年前 |
![]() |
ME Desings · 尝试从阵列复制时出现分段错误(核心转储)错误 2 年前 |
![]() |
DevelJoe · PHP异常类中的反向级联? 2 年前 |
![]() |
Sarimm Chaudhry · canot创建AR会话 2 年前 |
![]() |
felipou · Rust错误处理-捕获多个错误 2 年前 |