2010-03-18 8 views
19

¿Cómo puedo configurar Eclipse para detenerme en el punto donde ocurrió una excepción?¿Cómo configuro Eclipse para detenerme en la línea cuando ocurrió una excepción?

Tengo una configuración de punto de interrupción Eclipse para romper una excepción. En el siguiente ejemplo de código, el problema que tengo es que Eclipse intenta abrir el código fuente de Integer. ¿Hay alguna forma de tener un descanso del depurador en el punto que se muestra en mi ejemplo de código? Si me muevo hacia abajo en el trazado de la pila, llegaré a esta línea, sería bueno si hay una manera de hacerlo sin que aparezca la ventana "Fuente no encontrada".

Esto se puede hacer en Visual Studio, por lo que me está volviendo loco no poder encontrar una manera de hacerlo en 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 
    } 
} 

 

Respuesta

3
  1. no puedes establecer un punto de interrupción en la línea Integer.parseInt(str)?
  2. Si apunta su proyecto Eclipse al uso de un JDK en lugar de un JRE, debe elegir el código fuente para todas las clases de plataforma (Entero, etc.).
+1

Estoy tratando de evitar la apertura de la clase Integer. Solo quiero que rompa el problema con mi código. Establecer un punto de interrupción no ayudará ya que es solo un ejemplo simple. El código real tiene cientos de clases, etc. – Crispy

+1

Probablemente quieras decir 'JDK' en lugar de 'JVM' (?) – Fortega

+0

@Fortega, sí, gracias –

5

Preferencias -> Java -> Depuración -> paso de filtrado Elige paquetes que desea filtrar al depurar (java.*, sun.*, etc) En depuración Asegurarse que la etapa de filtración se selecciona la flecha.

Esto debería hacer el truco.

+0

¡Genial! ¡Siempre quise saber cómo hacer esto! – charlie

+1

No parece que funcione cuando un punto de interrupción está configurado para interrumpir la excepción :( – Crispy

+0

¿Qué tal si presiona el botón Volver, paso o caída al fotograma en ese punto? No estoy seguro de si funcionará, pero es una toma. –

2

La vista de depuración mostrará la pila completa de la ejecución actual. Debe seleccionar la línea que desea ver. Será igual que usted tenía un punto de interrupción no, se puede ver todas las variables etc.

35

No estoy seguro de qué otra manera de llegar allí, pero acabo de hacer:

Window -> Show View -> Breakpoints 

Y en esa pestaña hay una "J" que le permite establecer puntos de interrupción en excepciones.

+0

Sí, eso es lo que uso. Excepto en mi ejemplo, trata de abrir el Código fuente entero. No deseo que se abra el código fuente de Integer. Solo quiero que el depurador se detenga en 'Integer.parseInt (str);' – Crispy

+2

El depurador se detendrá cuando se produzca la excepción (que es lo que pediste que hiciera) y siempre abrirá el editor en la línea de origen que arrojó la excepción, en este caso en Integer.parseInt(). También se muestra toda la pila de llamadas, y puede hacer clic en el nivel apropiado para ver la fuente en ese nivel. – DJClayworth

+0

Puede usar la pila de llamadas para volver a su propio código, no hay una manera real de que decida mágicamente qué nivel de la pila considera interesante. Realmente deberías aceptar esta respuesta. – David

Cuestiones relacionadas