Utilisation de l'e.printStackTrace() en Java

c'est probablement une question d'internaute novice, mais j'espère que vous pouvez m'aider. :) J'ai quelque chose comme ceci:

try
{ 
//try to do something there
}
catch (IOException e)
{
//handle the exception 
e.printStackTrace();
}

J'utilise NetBeans IDE et pour une raison quelconque le trait printstack est souligné dans une ligne grisée. Quand J'appuie sur Alt+Enter, ça dit Lancable.printStackTrace () doit être supprimé. Qu'est-ce que cela signifie? Quelqu'un pourrait-il donner plus de perspicacité de ce que cela peut signifier? Ou puis-je ignorer cela?

Merci!

57
demandé sur O_O 2011-08-18 04:03:35

5 réponses

ce n'est qu'une recommandation. Dans eclipse c'est très bien - je crois que c'est juste L'IDE qui vous dit qu'il y a des méthodes plus conventionnelles de le faire, comme certaines des autres réponses. Je trouve que c'est utile pour déboguer, et que vous devriez dire aux Utilisateurs quand une erreur fatale va se produire, d'utiliser un mode de débogage (comme un commutateur de console-d) pour collecter ces journaux.

21
répondu Mgamerz 2011-08-18 00:16:41

, Essayez:

e.printStackTrace(System.out);
39
répondu Pablo Fernandez 2011-08-18 00:06:20

c'est probablement parce que printStackTrace() ne gère pas vraiment l'erreur autant qu'il décharge la pile dans la console. Il agit comme un placeholder jusqu'à ce que vous le remplaciez avec la manipulation d'erreur appropriée (si elle est nécessaire à tous) et remplacer la sortie avec un logger d'une sorte.

14
répondu dee-see 2011-08-18 00:08:32

E. printStackTrace ();

n'est pas une bonne pratique car il imprime dans L'ErrorStream par défaut, qui est la plupart du temps la console!

NetBeans devrait vous prévenir à ce sujet. La bonne pratique, c'est la journalisation du message. Suivre la même référence:

http://onjava.com/pub/a/onjava/2003/11/19/exceptions.html

Modifier Voir le premier commentaire soufflet pour plus d'infos.

9
répondu Arthur Neves 2011-08-18 01:13:22

il ne suffit pas d'imprimer une trace de pile. L'impression de la trace de pile de l'exception en soi ne signifie pas qu'il s'agit d'une mauvaise pratique, mais l'impression seulement de la trace de pile lorsqu'une exception se produit est un problème.

toujours enregistrer les exceptions(en utilisant un bon logging framework ), mais ne pas les exposer à l'utilisateur final. Et assurez-vous que l'affichage des traces de pile seulement en mode développement.

j'utilise moi-même(la plupart du temps) logger.log(Level.SEVERE, <exception>.getMessage(), <exception>); .

lorsque netbeans vous suggère de gérer l'exception ' Surround Statement with try-catch ', si vous cliquez sur ce, il générera):

try {
    //something need to be handle(exception that throw)
} catch (SQLException ex) {
    Logger.getLogger(ClassName.class.getName()).log(Level.SEVERE, null, ex);
}

ce qui est mieux que ex.printStackTrace(); .

Ces peut les aider:

1
répondu Blasanka 2017-08-06 09:51:37