如果我在 spring-boot 应用程序中使用 JpaRepository 作为示例。 我有通常的 Controller -> 服务 -> 存储库层。 假设我想将某些内容保存到数据库中,并且该项目已经存在(例如,由于我在几列之间创建了唯一约束,因此引发了 DataIntegrityViolationException)。
所以我们可以说这个被抛出了。如果用户尝试保存已经具有准确数据并且已存储在数据库中的对象,这是预期的行为。
我的问题是:我应该打印堆栈跟踪还是只执行基本的 logger.error(“已存在与您尝试保存的值相同的项目”)。
我找不到这方面的最佳实践。 我的想法是,这是一个已知错误,我知道出了什么问题,所以我不需要堆栈跟踪。它只是用额外的代码行向日志发送垃圾邮件。
有什么好的指点吗?
最佳答案
如果这是预期行为,请捕获异常并执行一些明智的操作,并且不要记录错误。如果您决定要记录错误,请包含堆栈跟踪。在日志中发现无法修复的错误是令人沮丧的(这似乎就是一个?),并且在没有足够详细信息的日志中发现错误也令人恼火。
当然,如果您重新抛出异常,请不要忘记包含原始异常(将其传递给构造函数)。
关于java - 如果发现已知错误(异常),是否应该打印堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51036619/