Lire une trace de pile

Lire une trace de pile Java : type et message de l'exception, cadres du plus récent au plus ancien, fichier et numéro de ligne, cadres de bibliothèque à sauter et chaîne Caused by.

  • 23 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Trace de pile : de quoi s'agit-il ?

    Voir la réponse

    Liste affichée quand une exception n'est pas attrapée : les appels en cours à l'instant de l'erreur, du plus récent au plus ancien, chacun avec son fichier et sa ligne.

    Elle répond à deux questions : où l'erreur a-t-elle été levée (première ligne at) et par quel chemin le programme y est-il arrivé (les lignes suivantes).

  • Cette trace vient du projet fr.iut. Quelle ligne de son propre code faut-il ouvrir en premier ?

    ```text
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
    at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
    at java.base/java.util.Objects.checkIndex(Objects.java:361)
    at java.base/java.util.ArrayList.get(ArrayList.java:427)
    at fr.iut.Panier.total(Panier.java:16)
    at fr.iut.Panier.traiter(Panier.java:29)
    at fr.iut.Panier.main(Panier.java:25)
    `

    • Panier.java:16
    • ArrayList.java:427
    • Preconditions.java:64
    • Panier.java:25
    Voir la réponse

    Panier.java:16

    Les cadres java.base/… appartiennent à la bibliothèque Java, qui a réagi correctement à un mauvais appel. Le premier cadre de fr.iut est Panier.total, ligne 16 : c'est là que l'index fautif a été demandé.

  • Dans une trace Java, la ligne … introduit l'exception qui a provoqué celle du dessus.

    Voir la réponse

    Dans une trace Java, la ligne Caused by introduit l'exception qui a provoqué celle du dessus.

    Une exception peut en envelopper une autre : le code a attrapé l'erreur d'origine puis en a levé une nouvelle en la gardant comme cause.

  • Cadre d'appel : de quoi s'agit-il ?

    Voir la réponse

    Une ligne at … de la trace : une méthode en cours d'exécution, avec le fichier source et la ligne où elle en était.

    at fr.iut.Panier.total(Panier.java:16) se lit : classe fr.iut.Panier, méthode total, fichier Panier.java, ligne 16.

  • Une trace commence par cinq cadres de java.util et jdk.internal avant le premier cadre de ton projet. Quelle démarche est la bonne ?

    • Ouvrir le tout premier cadre : le défaut est dans le code de la bibliothèque
    • Ouvrir le dernier cadre, car seul le point de départ explique l'erreur
    • Chercher la dernière version de Java, car l'exception vient de la bibliothèque
    • Aller au premier cadre de ton projet : ton appel a causé l'erreur
    Voir la réponse

    Aller au premier cadre de ton projet : ton appel a causé l'erreur

    Le code de la bibliothèque est très largement éprouvé : lorsqu'il lève une exception, c'est presque toujours parce qu'on lui a passé une mauvaise valeur. Le premier cadre de ton code est le dernier endroit où tu as la main.