Imprimer la stackTrace et déboguer les exceptions en java

stackTrace (trace d'appel en Français) est la représentation de la pile pendant l’exécution en java du programme. Les exceptions sont courants dans nos programme quand les programmeurs compilent leurs programmes. La trace d'appel nous permit de tracer la source de l'erreur.

public static void main(String[] args) {
appuyer(null);//ligne 9
}
static void appuyer(int[] a) {
System.out.println("boutton "+a[0]);//ligne 12
}
Exception in thread "main" java.lang.NullPointerException
at maClasse.appuyer(StringCompare.java:12)
at maClasse.main(StringCompare.java:9)
Cet exemple est simple, on peut connaitre ou l'erreur s'est passée en cliquant sur la dernière méthode appelée. L'erreur se trouve dans la ligne 12 et indique un accès à un objet nul (NullPointerException). Le seul objet présent est a[0] donc il est nul et on remarque que la méthode appuyer est appelée dans le main avec un paramètre null.

Exemple de try/catch

La méthode java.lang.Throwable.printStackTrace() imprime le déroulement complet de début jusqu'à l'apparition de l'exception sous forme de lignes dans l'ordre décroissant de la pile. La dernière ligne représente la racine qui est la première méthode empilée et la dernière représente le sommet de la pile dont l'erreur se trouve dedans. Les lignes sont en rouge parce que l'affichage se fait avec System.err.

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at Fenetre.(Fenetre.java:127)
at Test.main(Test.java:9)
Cette exception est levée par l’exécution du programme:

printStackTrace exception java

La classe Fenetre.java s'ouvre et on peut rechercher la cause dans la ligne 127 qui indique que le flux d'entrée est null. Ceci signifie que l'image n'est pas été trouvée mais pourquoi il a déclenché l’exception?

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
On cherche le type d'exception dans le catch et on remarque que c'est IOExeption car la méthode getResource doit impérativement accéder à la ressource qui se trouve dans fichier/icone.png sinon dans notre cas l'image n'est pas accessible alors une exception est levée et le programme s’arrête.

Références
What is a stack trace, and how can I use it to debug my application errors?
Class Throwable
How to print a stack trace to debug Java exceptions