何时记录捕获的异常的堆栈跟踪

Rae*_*ald 4 java logging exception-handling

我最近询问是否要报告getMessage()被捕异常的文本.相当令人惊讶的是,大多数答案误解了我的问题并认为我在询问是否报告了捕获异常的堆栈跟踪,这表明这样做被认为是常态.所以我要问一个跟进问题.

在您catch遇到异常时,您应该在哪种情况下或者不应该报告堆栈跟踪?通过"报告",我包括要求日志框架为您记录堆栈跟踪.

我不是在问一些事情.我在问这个报告是否应该包含堆栈跟踪.

alv*_*lvi 7

我个人试图遵守这些规则:

  • 如果我能以'可恢复'的方式处理catch中的异常(例如DateFormatException),则无需跟踪堆栈

  • 如果我想重新抛出异常,请记录没有堆栈跟踪.(以链式方式重新抛出以保留此信息)

  • 如果我在catch块中处理异常作为错误情况(例如sql错误),我会记录堆栈跟踪.

  • 如果它是一个运行时异常,我会建议框架(你的或你使用的任何东西)进行跟踪.


san*_*lto 0

我通常会报告与 GUI 无关的异常。GUI 异常很常见,并且在繁重的 Swing 程序中通常会发生。

一般来说,我对以下方面非常感兴趣:与数据库相关的异常、我自己的愚蠢错误异常(数组越界等)以及其他一些我无法处理的事情,例如WebServices等。

我认为这取决于系统的类型,它是公共系统(如网站)还是私有系统(内联网站点、GUI 本地)