将错误代码中的行号记录给用户是一个好习惯吗?

时间:2015-08-13 01:14:55

标签: java logging error-logging

我的任务是记录行号,作为向用户显示的错误代码的一部分。目前我正在使用:

StackTraceElement[] stackTraceElement = e.getStackTrace();
lineNumber = stackTraceElement[0].getLineNumber();

我知道上述方法可能会失败,具体取决于JVM版本。 另外,我已经看到PatternLayout提到“生成调用者位置信息非常慢。应该避免使用它,除非执行速度不是问题。”。

由于此消息将呈现给用户,我是否仍应将行号记录为错误代码的一部分?我试图了解这种方法的优缺点。此外, log4j 警告是否仅适用于其自身的实施,或者它是否通常是针对位置信息的警告?

3 个答案:

答案 0 :(得分:2)

嗯,一般来说,你的程序应该报告两种错误:

  1. 针对用户的错误(当用户没有做出他期望的事情时),这实际上应该更好地称为“反馈”,以帮助他用正确的数据提供程序(这是良好的用户体验)。
  2. 由于错误而生成的错误,实际上并非针对用户,而是开发人员,遗憾的是通过用户。然后是的,记录行号可能是一个好主意(或者给出错误唯一的名称/标识符,以便您可以轻松地跟踪它的发送位置)。但更好的想法是使用框架通过互联网直接向您报告此类问题(良好做法是先请求许可)。

答案 1 :(得分:1)

你应该向用户展示的是出了什么问题以及他能做些什么,如果有的话。行号信息需要可用,例如通过“更多详细信息”按钮,以防他需要提出支持票,但你不想吓唬他或者先把他弄糊涂。看看有多少堆栈跟踪在这里被误读或完全被忽略,这个社区应该是计算机程序员。

答案 2 :(得分:1)

通常情况下,如果您的程序没有出错,并且可以接收所有输入,并提供有关如何使用该应用程序的提示,则会更好。如果您希望他们购买您的产品等,这将为用户提供更好的体验。如果您的程序确实出错,那么用户知道行号将没有帮助。但是,您需要知道行号,因此您应该显示某种消息,告诉用户在发生错误时通过电子邮件向您发送堆栈跟踪。或者您可以让它自动报告错误消息并通过电子邮件发送给您。

抱歉,我有点迟了我不清楚问题是什么,所以我发布了这个评论,但显然这是一个可以接受的答案。