Quel est le problème avec l'aide de Système.commis une erreur en Java?
Je suis en utilisant le Enerjy (http://www.enerjy.com/) analyseur de code statique l'outil sur mon code Java. Il me dit que la ligne suivante:
Système.err.println("la non prise en compte de la base de données");
est mauvais parce qu'il utilise le Système.err. L'erreur exacte est: "JAVA0267 l'Utilisation du Système.err"
Quel est le problème avec l'aide de Système.err?
OriginalL'auteur user128807 | 2009-06-26
Vous devez vous connecter pour publier un commentaire.
Réponse courte: Il est considéré comme une mauvaise pratique de l'utiliser à des fins de journalisation.
C'est une observation que dans l'ancien temps où pas largement disponibles/a accepté de journalisation des cadres, tout le monde a utilisé le Système.euh pour l'impression des messages d'erreur et les traces de pile de la console. Cette approche pourrait être approprié au cours du développement local et de la phase des essais, mais n'est pas approprié pour un environnement de production, car vous risquez de perdre des messages d'erreur importantes. De ce fait, dans presque tous les outils d'analyse statique aujourd'hui ce genre de code est détecté et signalé comme une mauvaise pratique (ou un nom similaire).
La journalisation des cadres à leur tour, fournissent l'structuré de façon logique et à votre journal des événements et des messages d'erreur comme ils peuvent stocker le message dans divers persistante emplacements (fichier de log, log db, etc.).
Le plus évident (et sans dépendances externes)
hackla résolution est d'utiliser le construit dans l'enregistrement de Java cadre de lajava.util.logging.Logger
classe comme celle-ci transmet l'enregistrement des événements de la console par défaut. Par exemple:(ou vous pouvez désactiver cette option d'analyse)
En Outre Le Système.err ne comprennent pas d'informations où provient le message. Vous dépendent donc des lecteurs humains afin de déterminer ce qui doit être fait, si quoi que ce soit.
vous pourriez lâche important de messages d'erreur" Pourquoi? Il n'y a pas d'aller à la console? Ce qui me manque?
Qu'entendez-vous par "(ou vous pouvez désactiver cette option analyse)"?
Geek est une bonne question... Pourquoi dites-vous que nous pourrions perdre des messages d'erreur importantes avec
System.err
?OriginalL'auteur akarnokd
le descripteur de votre erreur est:
Il me semble que vous êtes en utilisant le Système.tre des fins de journalisation, qui est sous-optimale pour plusieurs raisons:
OriginalL'auteur dfa
Que je suis d'accord avec les points ci-dessus sur l'utilisation de la journalisation, j'ai toujours tendance à utiliser
System.err
de sortie en un seul endroit: au Sein d'arrêt de crochets. C'est parce que j'ai découvert que lors de l'utilisation de lajava.util.logging
cadre du journal des états ne sont pas toujours affichées si elles se produisent dans l'arrêt crochets. C'est parce que la bibliothèque de journalisation vraisemblablement contient son propre arrêt de crochet pour nettoyer les fichiers journaux et d'autres ressources, et que vous ne pouvez pas compter sur l'ordre d'arrêt des crochets exécuter, vous ne pouvez pas compter surjava.util.logging
déclarations fonctionne comme prévu.Consultez ce lien (la section "Commentaires") pour plus d'informations sur cette.
http://weblogs.java.net/blog/dwalend/archive/2004/05/shutdown_hooks_2.html
(Évidemment, l'autre alternative est d'utiliser un autre de journalisation.)
OriginalL'auteur Adamski
Système.l'erreur est vraiment plus à des fins de débogage qu'autre chose. La bonne gestion de l'exception et de traiter les erreurs dans une manière qui est plus convivial est préféré. Si l'utilisateur est destinée à voir l'erreur, l'utilisation d'un Système..println à la place.
Si vous souhaitez garder une trace de ces erreurs à partir d'un point de vue du développeur, vous devez utiliser un enregistreur.
OriginalL'auteur AlbertoPL
Les choses écrites dans le Système.err sont généralement perdu au moment de l'exécution, de sorte qu'il est considéré comme une meilleure pratique d'utiliser la journalisation cadre plus flexible sur la sortie de message, de sorte qu'il peut être stocké en tant que fichier et analysées.
Système.err et du Système.pour les applications de console n'est jamais vu par le développeur de l'exécution du code dans son IDE, et des informations utiles peuvent être perdus si l'élément est déclenché dans la production.
parce que la console disparaît lorsque l'application se ferme, ou on n'est jamais visible dans la première place.
OriginalL'auteur Yishai
Système.err.println et du Système..println ne doit pas être utilisé comme loggging-interface. STD-Sortie et les MST-Erreur (ceux-ci sont écrits par le Système.et .err) sont pour les messages à partir de la ligne de commande-outils.
OriginalL'auteur Mnementh
Système.tre imprime à la console. Cela peut être approprié pour un élève de tester leurs devoirs, mais ne conviennent pas pour une application où ces messages ne seront pas vu (uniquement pour la Console de stocker autant de lignes).
Une meilleure approche serait de jeter une exception maintenant le message qui serait normalement envoyés à la console. Une alternative serait d'utiliser un tiers le logiciel d'enregistrement qui serait de stocker les messages dans un fichier qui peut être stocké indéfiniment.
OriginalL'auteur ewh105