<分区>
此代码来 self 们的项目,生产代码:
if (changedToNull) {
try {
throw new Exception();
} catch (Exception e) {
log.debug("changedToNull", e);
}
}
开发人员不再与我们合作。
为什么有人会抛出一个Exception
并直接捕获并记录它?
<分区>
此代码来 self 们的项目,生产代码:
if (changedToNull) {
try {
throw new Exception();
} catch (Exception e) {
log.debug("changedToNull", e);
}
}
开发人员不再与我们合作。
为什么有人会抛出一个Exception
并直接捕获并记录它?
最佳答案
主要目的是为了调试目的进入if
block 时获取调用堆栈,但它可以重写为下一个:
if (changedToNull) {
log.debug("changedToNull", new Exception("changedToNull is true"));
}
假设 changedToNull
永远不应该是 true
并且您想获取调用堆栈以了解它是如何发生的,您可以按此方式进行。
创建一个调用堆栈是非常昂贵的,所以你应该通过检查 isDebugEnabled()
的值来确保启用 debug
级别(假设你使用 log4j
) 如下:
if (changedToNull && log.isDebugEnabled()) {
...
}
关于java - 有什么理由抛出 'Exception' 并立即捕获它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39666578/