2012-01-13 16 views
12

Si una aplicación Java arroja una excepción no controlada, hace que Eclipse se rompa en ese punto. ¿Hay alguna forma de inspeccionar la excepción actual? Básicamente, $exception de MSVS?¿Inspecciona la excepción actual en el depurador Eclipse?

+0

Eclipse is breaking? ¿Qué tal si miramos el archivo de registro de eclipse para ver qué fue lo que causó esto? – smox

+0

@smox Bueno, si usó la '$ exception' de MSVS, sabrá a qué me refiero. Eso le permite escribir en la vista Expresiones para ver la excepción actual y ver varios campos de forma interactiva. – kizzx2

+0

De acuerdo, leí la pregunta original completamente incorrecta :) ... ¿No puedes presionar más arriba en el StackTrace y luego ver las variables en la excepción? – smox

Respuesta

19

En el problema descrito se describe al hacer uso de Excepción punto de interrupción, en cuyo caso no tiene acceso a la variable de excepción y no puede inspeccionarla en la vista de variables.

He encontrado una "solución" a este problema en el siguiente mensaje: Breakpoint at exception in Eclipse - how to examine Exception object?

Es:

Hay una opción en las preferencias de Eclipse que permite la inspección de de la excepción lanzada:

Comprobar Java -> Depurar -> Abrir ventana emergente cuando se suspende en la excepción

Con esta opción, habrá una ventana emergente que permite la inspección de la excepción .

Extraño que esta opción no está marcada por defecto, ya que es muy ¡muy útil!

+0

Esto es genial, pero una pregunta de seguimiento que tengo es ¿cómo la recuperas si cambias de aplicación? Cambié a SO para votar la respuesta y cuando volví a eclipsar, la ventana emergente se había cerrado. MSVS FTW. – dcstraw

+0

Esto no funciona para mí. Establecí esta opción. Agregue un punto de interrupción de excepción para NullPointException. Corrí mi aplicación en el depurador. Causó una NullPointerException para ser lanzada. El depurador simplemente detiene la aplicación como se esperaba. Pero no se abre ventana o diálogo con los detalles de la excepción. De hecho, el comportamiento es exactamente como antes. – DragonFax

+2

Francamente, llevo más de 5 años tratando de responder a esta pregunta. Con frecuencia me sorprende que pueda detenerse en una excepción, pero se le niega cualquier otro detalle sobre la excepción que lo detuvo. – DragonFax

3

Si desea inspeccionar el objeto Exception, configure un punto de interrupción dentro del bloque catch, o configure un punto de interrupción de excepción, y pase el puntero sobre la variable en el punto de corte.

try { 
    ...code... 
} catch (Exception e) { 
    ... 
} 

Pase el ratón sobre la dirección, o abrir las variables Eclipse ver y añadir el nombre de la variable es una excepción.

Espero que esto ayude!

+0

Bueno, gracias por señalar lo obvio:/pero parece que la respuesta es "no, no se puede", entonces :( – kizzx2

+0

¿Cómo es esto un "no"? Desde la vista de desplazamiento o de Variables, puede profundizar en cualquier campo de la Excepción ... ¿qué es diferente de '$ exception'? – BRFennPocock

+1

@BRPocock' $ exception' no requiere una recompilación o detención de la aplicación en medio de una sesión de depuración acalorada – kizzx2

-1

En la perspectiva de depuración de eclipse, busque la vista "Puntos de interrupción". Ahora encuentre el icono de la barra de herramientas con un poco de "J" y un "!", La información sobre herramientas debe leer "Agregar punto de corte de excepción de Java". Al hacer clic en este icono de la barra de herramientas, se abre una ventana donde puede escribir un nombre de excepción y encontrar el que desea. Asegúrate de que esté marcada la opción "Suspender por excepciones no detectadas". Es posible que también desee desmarcar "Suspender excepciones atrapadas" o probablemente suspenderá/abandonará las excepciones que ya se manejan adecuadamente en su código. Luego haz clic en "Aceptar".

Ahora verá su tipo de excepción en la lista de puntos de interrupción y podrá ejecutar su aplicación Java en modo de depuración. Eclipse suspenderá/interrumpirá la excepción no detectada y luego podrá depurar y observar las variables y demás. (Recuerde que puede hacer clic en la pila de llamadas y ver otras variables y métodos)

En la lista de puntos de interrupción, puede desmarcar su tipo de excepción para no suspender o interrumpir esa excepción en particular. Esto es conveniente, por lo que no tiene que eliminar/agregar en tipos de excepción típicos todo el tiempo. Puede imaginar que tengo NullPointerException, IllegalArgumentException, ArrayIndexOutOfBoundsException, entre otros, todos agregados a mi lista y activarlos/desactivarlos según sea necesario.

+0

La pregunta es cómo inspeccionar la excepción (ya se está rompiendo una excepción). –

0

Normalmente voy a la vista 'Variables' y busco la variable que contiene la excepción (generalmente e), pero creo que depende del contexto específico en el que se produce la excepción, esta no es una información de Eclipse como usted están pidiendo.

Cuestiones relacionadas