java - 打印异常与 Exception.getMessage

标签 java exception

关于异常使用以下两段代码是否有最佳实践。

//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/

相关文章:

java - 如何隐藏SWT浏览器或以 headless 模式运行?

java - 如果条件满足,Hibernate 执行 OneToMany

java - IntelliJ 找不到依赖项选项卡

java - 跨越 JTable 中所有列的单元格

java - 为什么要将 lambda 中的已检查异常包装在未检查异常中?

java - 表示节点之间路径长度的数据结构?

java - 重用库定义的异常

java - Spring Boot - 自定义异常处理程序

python - 如何使用 spaCy 处理 python 生成器的异常

c# - 为什么子域关闭程序中出现异常?