2010-03-18 3 views
19

Comment puis-je configurer Eclipse pour qu'il s'arrête au point où une exception s'est produite? J'ai une configuration de point d'arrêt Eclipse pour interrompre une exception.Comment configurer Eclipse pour arrêter sur la ligne une exception s'est produite?

Dans l'exemple de code ci-dessous, le problème que j'ai est Eclipse essaie d'ouvrir le code source Integer. Y a-t-il un moyen d'interrompre le débogueur au point indiqué dans mon exemple de code? Si je descends la trace de la pile, j'arriverai à cette ligne, ce serait bien s'il y a un moyen de le faire sans que la fenêtre "Source non trouvée" apparaisse. Cela peut être fait dans Visual Studio, donc ça me rend fou de ne pas pouvoir trouver un moyen de le faire dans Eclipse.

package com.test; 

public class QuickTest 
{ 
    public static void main(String[] args) 
    { 
    try 
    { 
     test(); 
    } 
    catch(NumberFormatException e) 
    { 
     System.out.println(e.getMessage()); 
    } 
} 

    private static void test() 
    { 
    String str = "notAnumber"; 

    Integer.parseInt(str);//<----I want debugger to stop here 
    } 
} 

 

Répondre

3
  1. tu ne peux pas mettre un point d'arrêt sur la ligne Integer.parseInt(str)?
  2. Si vous pointez votre projet Eclipse sur l'utilisation d'un JDK au lieu d'un JRE, il doit récupérer le code source de toutes les classes de plate-forme (Integer, etc.).
+1

J'essaie d'éviter d'ouvrir la classe entière. Je veux juste qu'il casse le problème avec mon code. Définir un point d'arrêt n'aidera pas, car ce n'est qu'un exemple simple. Le vrai code a des centaines de classes, etc. – Crispy

+1

Vous voulez probablement dire 'JDK' au lieu de 'JVM' (?) – Fortega

+0

@Fortega, oui, merci –

5

Préférences -> Java -> Debug -> Étape Filtrage Choisissez les paquets que vous souhaitez filtrer lors du débogage (java.*, sun.*, etc) Le débogage assurez-vous que la petite flèche étape de filtrage est sélectionné.

Cela devrait faire l'affaire.

+0

Cool, j'ai toujours voulu savoir comment faire ça! – charlie

+1

Il ne semble pas que cela fonctionne quand un point d'arrêt est configuré pour interrompre une exception :( – Crispy

+0

Que diriez-vous si vous appuyez sur step return, step over ou drop to frame à ce moment-là? Pas sûr que ça fonctionne mais c'est un coup de feu. –

2

La vue Débogage affichera la pile entière de l'exécution en cours. Vous devez sélectionner la ligne que vous voulez voir. Ce sera le même que vous aviez un point de jonction, vous pouvez voir toutes les variables etc.

35

Je ne sais pas comment les autres pour y arriver, mais je fais juste:

Window -> Show View -> Breakpoints 

Et dans cet onglet il y a un "J!" Cela vous permet de définir des points d'arrêt sur des exceptions.

+0

Ouais c'est ce que j'utilise.Sauf dans mon exemple, il essaie d'ouvrir le Code source entier: Je ne veux pas que le code source Integer s'ouvre, je veux juste que le débogueur s'arrête à 'Integer.parseInt (str);' – Crispy

+2

Le débogueur s'arrêtera lorsque l'exception sera levée (ce qui est ce que vous lui avez demandé de faire) et ouvrira toujours l'éditeur à la ligne source qui a lancé l'exception - dans ce cas, dans Integer.parseInt(). La pile d'appels complète est également affichée, et vous pouvez cliquer sur le niveau approprié pour regarder la source à ce niveau. – DJClayworth

+0

Vous pouvez ensuite utiliser la pile d'appels pour revenir à votre propre code, il n'y a pas vraiment de moyen magique pour décider du niveau de la pile que vous considérez comme intéressant. Vous devriez vraiment accepter cette réponse. – David

Questions connexes