关于异常使用以下两段代码是否有最佳实践。
//code1
} catch (SomeException e) {
logger.error("Noinstance available!", e.getMessage());
}
//code2
} catch (SomeException e) {
logger.error("Noinstance available!", e);
}
什么时候应该使用异常的getMessage方法?
最佳答案
第一个无法编译,因为方法 error
接受 String
作为第一个参数,接受 Throwable
作为第二个参数。
e.getMessage()
不是 Throwable
。
代码应该是
} catch (SomeException e) {
// No stack trace
logger.error("Noinstance available! " + e.getMessage());
}
对比
} catch (SomeException e) {
// Prints message and stack trace
logger.error("Noinstance available!", e);
}
第一个只打印一条消息。第二个也打印整个堆栈跟踪。
是否需要打印堆栈跟踪取决于上下文。
如果您已经知道为什么会抛出异常,那么打印整个堆栈跟踪不是一个好主意。
如果你不知道,最好打印整个strack trace,以便轻松找到错误。
关于java - 打印异常与 Exception.getMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32840399/