我们正在使用util方法来处理捕获的异常。即使我们从Util方法记录异常,我们也会收到Sonar Qube违规行为“记录或重新抛出此异常”。
示例代码:
catch (Exception e) {
LogUtils.logErr(e);
}
LogUtils.logErr(e):
public static void logErr(Throwable e) {
StackTraceElement[] ste = Thread.currentThread()
.getStackTrace();
String className = ste[2].getClassName();
String methodName = ste[2].getMethodName();
logger.error(buildMessage(className, methodName, ""), e);
sendEmail(null, e);
}
请让我知道是否有解决方法让声纳忽略这种用法。 它看起来像提供的规则的问题。请确认..
答案 0 :(得分:0)
我道歉,但评论太长了......
你的环境是什么?你如何执行分析?
我创建了两个类:
public class S1166 {
public static Integer parse(String text) {
try {
return Integer.parseInt(text);
} catch (Exception e) {
LogUtils.log(e);
return null;
}
}
}
LogUtils:
public final class LogUtils {
private static final Logger logger = Logger.getLogger("name");
private LogUtils() {
// blocks the possibility to create a new instance
}
public static void log(Throwable e) {
StackTraceElement[] ste = Thread.currentThread().getStackTrace();
String className = ste[2].getClassName();
String methodName = ste[2].getMethodName();
logger.log(Level.FINEST, String.format("%s#%s", className, methodName), e);
}
}
SonarQube没有发现任何问题。
环境: