De journaux ou renvoyer cette exception
Double Possible de Sonar de se plaindre de la journalisation et de renvoi à l'exception.
C'est mon code dans une classe:
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());
}
et mon Enregistreur de classe:
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 vers catch (final Exception e)
et dit Either log or rethrow this exception
. Qu'en pensez-vous?
Vous devez vous connecter pour publier un commentaire.
Si vous regardez la description de la règle :
https://rules.sonarsource.com/java/RSPEC-1166
Et surtout le titre :
Dans votre cas, vous ne sont en prenant soin de le message de l'exception, donc pas la préservation de l'éventuelle stacktrace (et donc la cause de l'échec).
Cette règle détecte que vous n'êtes pas en utilisant l'exception interceptée comme un objet entier dans le bloc catch.
Cela pourrait ne pas être approprié dans votre cas : soit la marque de la règle de "ne sera pas corrigé" ou de les désactiver dans votre profil de qualité.
Noncompliant code example
, deuxième échantillon,try { /* ... */ } catch (Exception e) { LOGGER.info(e.getMessage()); }
ressemble à la mienne. N'est-ce pas?