Existe um recurso que interrompa automaticamente a depuração na ocorrência da primeira exceção?
Então nós
- iniciar aplicação
- faça algo que lança exceção
- O IntelliJ apareceu a linha destacada onde ocorreu a exceção.
Existe um recurso que interrompa automaticamente a depuração na ocorrência da primeira exceção?
Então nós
Respostas:
Executar | Exibir pontos de interrupção | Pontos de interrupção de exceção
Uma maneira rápida de exibir a caixa de diálogo é pressionar Ctrl+ SHIFT+ F8(No Mac: Cmd+ SHIFT+ F8) e clicar na guia Pontos de interrupção da exceção. Se essa foi a última guia que você estava visualizando, ela ainda será selecionada, facilitando a ativação e desativação de exceções.
Isso fará com que o IntelliJ quebre no ponto do código (ou código da biblioteca) em que a exceção foi gerada. Especificamente, você obtém uma 'primeira chance' no tratamento de exceções, antes que a pilha seja percorrida procurando blocos catch / finalmente para executar.
DICA: Java tende a lançar muitas exceções internamente ao carregar classes, portanto essa quebra em todas as exceções pode se tornar bastante entediante. A boa notícia é que você pode excluir certos tipos de exceção usando o campo de condição .
Por exemplo:
!(this instanceof java.lang.ClassNotFoundException)
Você pode encadear várias dessas condições juntamente com &&
.
No IntelliJ IDEA 14, acesse:
Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"
Se você não desmarcar, Caught Exceptions
a execução será interrompida toda vez que Java Framework
lançar uma exceção interna.
Sim existe. Você precisa definir um ponto de interrupção de exceção (pode ser "Qualquer exceção") na caixa de diálogo de pontos de interrupção no IntelliJ IDEA.
As exceções podem ser filtradas por condição ou classe, se desejado, ou se você está interessado em exceções capturadas ou não capturadas.
Se você clicar no pequeno sinal de "+" no canto superior esquerdo, poderá adicionar um novo ponto de interrupção. Se você selecionar Ponto de interrupção de exceção, será exibida uma pequena caixa de diálogo na qual poderá inserir a classe de exceção para interromper (caso você não queira interromper todas as exceções).
Nas versões mais recentes do intellij, em Executar > Exibir pontos de interrupção .
Em seguida, verifique Java Exception Breakpoints -> Any Exception .
Uma boa maneira de depurar as exceções é usar o pacote principal de aplicativos e o curinga .*
. Dessa forma, você pula todas as outras exceções de bibliotecas, pois na maioria das vezes você procura exceções lançadas pelo aplicativo e não por qualquer outra biblioteca (que pode ser muitas exceções).
Como um exemplo mostrado na imagem, eu uso com.gs.mercury.*
para quebrar sempre que o aplicativo lança uma exceção. Se você usar exceções para o que elas servem (para lidar com casos excepcionais e não para lidar com o fluxo de situações normais), você só parará quando atingir a exceção desejada quase o tempo todo.
PD. resposta adicionada apenas para indicar o útil filtro da classe Catch .