Éviter printStackTrace(); utiliser un enregistreur d'appel, au lieu
Dans ma demande, je suis en cours d'exécution de mon code par le biais de la PMD.Il m'indique ce message:
- Éviter printStackTrace(); utiliser un enregistreur d'appel à la place.
Ça veut dire quoi?
Vous devez vous connecter pour publier un commentaire.
Cela signifie que vous devez utiliser la journalisation cadre comme logback ou log4j et au lieu de l'impression des exceptions directement:
vous devez vous connecter en utilisant cette frameworks' API:
La journalisation des cadres de vous donner beaucoup de souplesse, par exemple, vous pouvez choisir si vous souhaitez vous connecter à la console ou le fichier - ou peut-être passer certains messages si vous en trouvez n'est plus pertinent dans certains environnement.
Si vous appelez
printStackTrace()
sur une exception de la trace écrite àSystem.err
et il est difficile de route ailleurs (ou filtre). Au lieu de faire cela, vous êtes conseillé d'utiliser une structure de journalisation (ou un wrapper autour de plusieurs journalisation des cadres, comme Apache Commons Logging) et le journal de l'exception à l'aide de ce cadre (par exemple,logger.error("some exception message", e)
).Faire, qui vous permet de:
Une production de qualité, le programme doit utiliser l'un des nombreux journalisation des alternatives (par exemple, log4j, logback, java.util.l'exploitation forestière) pour signaler des erreurs et d'autres diagnostics. Cela a un certain nombre d'avantages:
En revanche, si vous utilisez seulement printStackTrace, le deployer /utilisateur final a si peu de contrôle, et la journalisation des messages sont susceptibles d'être perdus ou présentée à l'utilisateur final dans des circonstances inappropriées. (Et rien terrifie un timide utilisateur plus d'un aléatoire trace de la pile.)
En Simple,e.printStackTrace() n'est pas une bonne pratique,car elle se contente d'afficher la trace de la pile d'erreur standard. De ce fait, vous ne pouvez pas vraiment contrôler la destination de cette sortie.
Presque toutes les fonctionnalités de journalisation fournit une méthode dans laquelle nous pouvons passer l'objet throwable, avec un message. Comme:
Ils imprimer la stacktrace de l'objet throwable.
La raison principale est que Proguard serait de supprimer le Journal des appels à partir de la production. Parce que par l'enregistrement ou l'impression StackTrace, il est possible de voir (de l'information à l'intérieur de la trace de pile ou Journal) à l'intérieur du téléphone Android, comme par exemple, Logcat application de Lecteur. De sorte que c'est une mauvaise pratique pour la sécurité. Aussi, nous n'avons pas accès au cours de la production, il serait préférable de se retiré de la production. Comme ProGuard supprimer tous les appels du Journal de ne pas stackTrace, il est donc préférable d'utiliser un Journal dans les blocs catch et de les laisser retiré de la Production par Proguard.