web-dev-qa-db-fra.com

Utilisation de e.printStackTrace () dans Java

C'est probablement une question de débutant, mais espérons que vous pourrez m'aider. :) J'ai quelque chose comme ça:

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

J'utilise NetBeans IDE et pour une raison quelconque, printStackTrace est souligné par une ligne sinueuse. Lorsque j'appuie sur Alt + Entrée, le message Throwable.printStackTrace () doit être supprimé. Qu'est-ce que cela signifie? Quelqu'un pourrait-il donner plus de détails sur ce que cela peut signifier ou puis-je l'ignorer?

Merci!

60
O_O

C'est juste une recommandation. Dans Eclipse, tout va bien. Je crois que c’est juste le IDE) qui vous dit qu’il existe des méthodes plus conventionnelles, comme certaines autres réponses. Je trouve que cela est utile pour le débogage, et que vous devriez informer les utilisateurs, lorsqu'une erreur fatale va se produire, d'utiliser un mode de débogage (comme un commutateur de console -d) pour collecter ces journaux.

21
Mgamerz

Essayer:

e.printStackTrace(System.out);
42
Pablo Fernandez

C'est probablement parce que printStackTrace() ne traite pas vraiment l'erreur autant que de vider la pile dans la console. Il agit en tant qu'espace réservé jusqu'à ce que vous le remplaciez par le traitement correct des erreurs (si nécessaire) et que vous remplaciez le résultat par un enregistreur.

14
dee-see

e.printStackTrace ();

Ce n’est pas une bonne pratique car elle imprime dans le ErrorStream par défaut, qui est la plupart du temps la console!

NetBeans devrait vous en avertir. La bonne pratique à ce sujet est de consigner le message. Suivez la même référence:

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

[~ # ~] edit [~ # ~] Voir le premier commentaire ci-dessous pour plus d'informations.

10
Arthur Neves

Il ne suffit pas d’imprimer une trace de pile. Imprimer la trace de pile de l'exception en elle-même ne signifie pas que c'est une pratique déconseillée, mais imprimer uniquement la trace de pile quand une exception se produit pose un problème.

Consignez toujours les exceptions (en utilisant un bon cadre de journalisation ), mais ne les exposez pas à l'utilisateur final. Et assurez-vous que les traces de pile ne sont affichées qu'en mode développement.

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

quand netbeans vous suggère de gérer l'exception 'Surround Statement with try-catch', si vous cliquez dessus, cela va générer):

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 meilleur que ex.printStackTrace();.

Ceux-ci peuvent aider:

3
Blasanka