记录或重新抛出此异常

Either log or rethrow this exception

可能与 重复。

这是我的代码 class:

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());
    }

和我的记录器class:

    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);
        }
}

声纳指向 catch (final Exception e) 并说 Either log or rethrow this exception。你怎么看?

如果您查看规则 RSPEC-1166 的说明,尤其是标题:

Exception handlers should preserve the original exception

在您的情况下,您只需要处理异常的 消息 ,因此不会保留原始的 异常(包括其 stacktrace )。因此,您生成的日志将隐藏失败的根本原因。

此规则检测到您没有在 catch 块中将捕获的异常作为整个 object 使用。

适当的修正

这可能不适合您的情况:

  • 要么将规则标记为“不会修复”
  • 或在您的质量配置文件中停用该规则