运行SonarQube时,会发现一个异常,称为"异常处理程序应保留原始异常"。此处提供完整的异常描述。
意思对我们来说很清楚。问题是,我们是以下语句似乎被编译器允许(见兼容解决方案):
try { /* ... */ } catch (Exception e) { LOGGER.info("context", e); }
我们不是在使用LOGGER,而是:
trc.traceRaw(DcWxTaTrc.INFO, "Exception <" + e.getMessage() + ">
ignored");
有没有办法也允许这种日志记录?如果是:如何?
这与用于记录问题的记录器无关。如果您查看了更新后的描述:http://jira.sonarsource.com/browse/RSPEC-1166
//不符合-异常丢失(只保留消息)
try{/*…*/}catch(异常e){LOGGER.info(e.getMessage());}
会出现一个问题,因为您只保留异常的消息,因此丢失了根据规则应该记录的堆栈争用的信息。