可能重复Sonar complaining about logging and rethrowing the exception.
这是我在课堂上的代码:
try
{
this.processDeepLinkData(data);
}
catch (final Exception e)
{
// Error while parsing data
// Nothing we can do
Logger.error(TAG, "Exception thrown on processDeepLinkData. Msg: " + e.getMessage());
}
和我的Logger类:
import android.content.Context;
import android.util.Log;
import com.crashlytics.android.Crashlytics;
public final class Logger
{
/**
* Convenience method.
*
* @see Logger#log(String, String)
*/
public static void error(final String tag, final String msg)
{
if (Logger.DEBUG)
{
Log.e(tag, "" + msg);
}
else
{
Logger.log(tag, "" + msg);
}
}
private static void log(final String tag, final String msg)
{
Crashlytics.log(tag + ": " + msg);
}
}
声纳指向捕获(最终异常e)并说要么记录或重新抛出此异常.你怎么看?
解决方法:
如果查看规则说明:
https://rules.sonarsource.com/java/RSPEC-1166
尤其是标题:
Exception handlers should preserve the original exception
在您的情况下,您只关注异常的消息,因此不保留最终的堆栈跟踪(以及失败的根本原因).
此规则检测到您没有将捕获的异常用作catch块中的整个对象.
这可能不适合您的情况:将规则标记为“不会修复”或在质量配置文件中将其停用.