java – 为什么squid:S1166只在记录捕获的异常时才接受异常消息?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么squid:S1166只在记录捕获的异常时才接受异常消息?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1208字,纯文字阅读大概需要2分钟。
内容图文
![java – 为什么squid:S1166只在记录捕获的异常时才接受异常消息?](/upload/InfoBanner/zyjiaocheng/788/06c329951d764ffdb9f8afeee3750e85.jpg)
引用规则的描述(SonarQube 4.5.5):
// Noncompliant - exception is lost (only message is preserved)
try { /* ... */ }
catch (Exception e) { LOGGER.info(e.getMessage()); }
通过向记录器提供异常类,将堆栈跟踪写入日志.
我们的代码库中的问题是:
遵循Tell, don’t ask原则,我们使用已检查的异常作为我们考虑的正常执行路径的一部分,并且我们不希望它们导致不合理的大型日志消息.
举几个例子:服务器响应错误代码,数据库语句执行失败,乐观锁定(并发用户)……
我的建议:把这个案子分成两部分.
// Noncompliant - exception is lost (only message is preserved)
try { /* ... */ }
catch (Exception e) { LOGGER.info(e.getMessage()); }
和
// Compliant - exception is lost (only message is preserved) but there is business logic handling the situation
try {
/* ... */
} catch (Exception e) {
LOGGER.info(e.getMessage());
*/ exception handling */
}
规则squid:S00108(代码块不能为空)不会捕获问题,因为有一个日志记录语句.
这不合理吗?我错过了一些重要的东西吗?
注意:我已经重写了这个问题以澄清我的用例
解决方法:
我理解维护堆栈跟踪的论据以及所有这些,但我认为它会使你的日志膨胀为<错误级别事件.一种解决方案是将消息记录为WARN,并将异常对象记录为DEBUG或TRACE.这样,普通的用户日志配置不会像通常的堆栈跟踪一样泛滥,但如果需要,仍然可以获得堆栈跟踪.
内容总结
以上是互联网集市为您收集整理的java – 为什么squid:S1166只在记录捕获的异常时才接受异常消息?全部内容,希望文章能够帮你解决java – 为什么squid:S1166只在记录捕获的异常时才接受异常消息?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。