下面的编码方式是好的做法吗?
try {
//my code here
} catch (Exception e) {
logger.error("Some error ", e);
throw new MyCustomException("Some error ", e);
}
而且,我应该……
- 只使用记录器?
- 只抛出异常?
- 两者都做?
我知道使用 throw
我可以在调用堆栈的另一部分捕获异常,但也许额外的日志记录有一些隐藏的好处并且也很有用。
最佳答案
通常,我认为您应该记录 或 重新抛出。两者都做只会导致每一层一次又一次地记录异常,这使得日志难以阅读。更糟糕的是,很难弄清楚您实际上有多少错误 - 是七个错误,还是记录了相同错误的应用程序的七个层?
这意味着如果您抑制异常,您将记录它并说明您认为不值得重新抛出的原因。
另一方面,如果你重新抛出异常,你知道它要么被捕获并被抑制(在这种情况下,捕获器记录异常以及它被抑制的原因),或者它会从您的应用程序中冒出并被应用程序容器捕获,该容器将捕获并记录异常。每个异常在日志中只显示一次。
关于java - 抛出异常与日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22072343/