¿Existe una "interrupción por excepción" en IntelliJ?
¿Existe alguna característica que interrumpa automáticamente la depuración cuando ocurre la primera excepción?
Así que nosotros
- iniciar la aplicación
- hacer algo que arroje una excepción
- Consiguió que IntelliJ apareciera una línea resaltada donde ocurrió la excepción.
Ejecutar | Ver puntos de interrupción | Puntos de interrupción de excepción
Una forma rápida de abrir el cuadro de diálogo es presionar Ctrl+ SHIFT+ F8(en Mac: Cmd+ SHIFT+ F8), luego hacer clic en la pestaña de puntos de interrupción de excepción. Si esa fue la última pestaña que estaba viendo, seguirá seleccionada, lo que facilitará activar y desactivar las excepciones.
Esto hará que IntelliJ se interrumpa en el punto del código (o código de la biblioteca) donde se generó la excepción. Específicamente, obtienes una 'primera oportunidad' en el manejo de excepciones, antes de que se recorra la pila en busca de bloques catch/finally para ejecutar.
SUGERENCIA: Java tiende a generar muchas excepciones internamente al cargar clases, por lo que desglosar todas las excepciones puede resultar bastante tedioso. La buena noticia es que puedes excluir ciertos tipos de excepción utilizando el campo de condición .
Por ejemplo:
!(this instanceof java.lang.ClassNotFoundException)
Puede encadenar varias de estas condiciones junto con &&
.
En IntelliJ IDEA 14 vaya a:
Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"
Si no desmarca Caught Exceptions
la ejecución, se detendrá cada vez que se Java Framework
produzca una excepción interna.
En las versiones más recientes de intellij, se encuentra en Ejecutar > Ver puntos de interrupción .
Luego puede verificar los puntos de interrupción de excepción de Java -> Cualquier excepción .
Una buena forma de depurar las excepciones es utilizar el paquete de la aplicación principal y el comodín .*
. De esta manera, omitirá todas las demás excepciones de bibliotecas, ya que la mayoría de las veces busca excepciones generadas por su aplicación y no por ninguna otra biblioteca (que pueden ser muchas excepciones).
Como se muestra en el ejemplo de la imagen, suelo com.gs.mercury.*
interrumpir cada vez que la aplicación arroja una excepción. Si usa excepciones para lo que sirven (para manejar casos excepcionales y no para manejar el flujo de situaciones normales), solo se detendrá cuando alcance la excepción deseada casi todo el tiempo.
Utilizaría filtros de clase Catch para especificar las clases de las excepciones que espera detectar, y filtros de clase para especificar en qué clases espera detectar la excepción.
Nota: Se agregó la aclaración entre los filtros de clase Catch y los filtros de clase realizada por @Roman en los comentarios.
PD. Se agregó la respuesta solo para señalar los filtros de clase Catch y los filtros de clase bastante útiles .
Sí hay. Debe definir un punto de interrupción de excepción (puede ser "Cualquier excepción") en el cuadro de diálogo de puntos de interrupción en IntelliJ IDEA.
Las excepciones se pueden filtrar por condición o clase si lo desea, o según si está interesado en excepciones detectadas o no detectadas.