java - 如果发现已知错误(异常),是否应该打印堆栈跟踪?
问题描述
如果我在 spring-boot 应用程序中使用 JpaRepository 作为示例。我有通常的 Controller -> Service -> Repository 层。假设我想将某些内容保存到数据库中并且该项目已经存在(例如,DataIntegrityViolationException 被抛出,因为我在几列之间创建了一个唯一约束)。
所以可以说这是抛出。如果用户尝试保存已具有确切数据且已存储在数据库中的对象,则这是预期行为。
我的问题是:我应该打印堆栈跟踪还是只做一个基本的 logger.error(“一个项目已经存在,具有与您尝试保存的相同值”)。
我找不到这方面的最佳做法。我的想法是这是一个已知错误,我知道出了什么问题,所以我不需要堆栈跟踪。它只是用额外的代码行向日志发送垃圾邮件。
有什么好的指点吗?
解决方案
如果这是预期行为,请捕获异常并做一些明智的事情,不要记录错误。如果您决定要记录错误,请包含堆栈跟踪。在日志中发现您无法修复的错误令人沮丧(这似乎是一个?)而且在没有足够详细信息的情况下在日志中发现错误也令人恼火。
当然,如果您重新抛出异常,请不要忘记包含原始异常(将其传递给构造函数)。
推荐阅读
- java - 整个模拟过程中代理之间的恒定距离
- java - 如何使用junit命令行运行黄瓜测试运行器
- wordpress - 如何建立像谷歌这样的集中式认证网站?
- mongodb - 在 MongoDB 中设置空值
- javascript - Chrome 扩展程序 - 每次加载新页面时运行内容脚本
- r - 无法通过使用 ggplot2 从 excel 表调用来获取变量的绘图和日期日期
- ios - 如何从 AVPlayer 中提取整个流标题?
- python - 密集合成器的实现
- c++ - 如何解决 codechef ide 上的 sigabrt 错误
- python - 如何防止在 Python 中重复打印结果