我的任务是记录行号,作为向用户显示的错误代码的一部分。目前我正在使用:
StackTraceElement[] stackTraceElement = e.getStackTrace();
lineNumber = stackTraceElement[0].getLineNumber();
我知道上述方法可能会失败,具体取决于JVM版本。
另外,我已经看到PatternLayout
提到“生成调用者位置信息非常慢。应该避免使用它,除非执行速度不是问题。”。
由于此消息将呈现给用户,我是否仍应将行号记录为错误代码的一部分?我试图了解这种方法的优缺点。此外, log4j 警告是否仅适用于其自身的实施,或者它是否通常是针对位置信息的警告?
答案 0 :(得分:2)
嗯,一般来说,你的程序应该报告两种错误:
答案 1 :(得分:1)
你应该向用户展示的是出了什么问题以及他能做些什么,如果有的话。行号信息需要可用,例如通过“更多详细信息”按钮,以防他需要提出支持票,但你不想吓唬他或者先把他弄糊涂。看看有多少堆栈跟踪在这里被误读或完全被忽略,这个社区应该是计算机程序员。
答案 2 :(得分:1)
通常情况下,如果您的程序没有出错,并且可以接收所有输入,并提供有关如何使用该应用程序的提示,则会更好。如果您希望他们购买您的产品等,这将为用户提供更好的体验。如果您的程序确实出错,那么用户知道行号将没有帮助。但是,您需要知道行号,因此您应该显示某种消息,告诉用户在发生错误时通过电子邮件向您发送堆栈跟踪。或者您可以让它自动报告错误消息并通过电子邮件发送给您。
抱歉,我有点迟了我不清楚问题是什么,所以我发布了这个评论,但显然这是一个可以接受的答案。