java - 如果发现已知错误(异常),是否应该打印堆栈跟踪?

标签 java exception

如果我在 spring-boot 应用程序中使用 JpaRepository 作为示例。 我有通常的 Controller -> 服务 -> 存储库层。 假设我想将某些内容保存到数据库中,并且该项目已经存在(例如,由于我在几列之间创建了唯一约束,因此引发了 DataIntegrityViolationException)。

所以我们可以说这个被抛出了。如果用户尝试保存已经具有准确数据并且已存储在数据库中的对象,这是预期的行为。

我的问题是:我应该打印堆栈跟踪还是只执行基本的 logger.error(“已存在与您尝试保存的值相同的项目”)。

我找不到这方面的最佳实践。 我的想法是,这是一个已知错误,我知道出了什么问题,所以我不需要堆栈跟踪。它只是用额外的代码行向日志发送垃圾邮件。

有什么好的指点吗?

最佳答案

如果这是预期行为,请捕获异常并执行一些明智的操作,并且不要记录错误。如果您决定要记录错误,请包含堆栈跟踪。在日志中发现无法修复的错误是令人沮丧的(这似乎就是一个?),并且在没有足够详细信息的日志中发现错误也令人恼火。

当然,如果您重新抛出异常,请不要忘记包含原始异常(将其传递给构造函数)。

关于java - 如果发现已知错误(异常),是否应该打印堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51036619/

相关文章:

java - SBT 不会编译 HelloWorld ScalaFX 示例,提示类路径中缺少 javafx

java - java 11中isEmpty()和isBlank()方法的区别

java - 如何在运行时加载的 jsp 中包含 html 片段?

java - 如何在Exception的stackTrace中找到自己编码的类或过程

exception - 使用 SML 处理和打印异常

java - 在java中如何捕获类中的异常并将其抛出到另一个类以获取/打印异常的类型

c++ - 怎么可能知道是什么导致了异常

JAVA_HOME 目录不包含处理 Play 服务依赖项所需的 jar

java - 从 Activity 1 切换到 Activity 2 时应用崩溃

java - IllegalSelectQueryException 和 InvalidDataAccessApiUsageException