gpt4 book ai didi

java - 记录或重新抛出此异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:09 24 4
gpt4 key购买 nike

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

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

最佳答案

如果你看规则的描述RSPEC-1166 ,尤其是标题:

Exception handlers should preserve the original exception

在您的情况下,您只处理异常的消息,因此不会保留原始异常(包括它的堆栈跟踪) .因此,您生成的日志将隐藏失败的根本原因。

此规则检测到您没有将捕获的异常用作 catch block 中的整个对象。

适当的修复

这可能不适合您的情况:

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

关于java - 记录或重新抛出此异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32197329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com