E ai Pessoal,
Estou querendo achar uma forma de capturar as exceções do meu projeto e exibi-las, ao invés do console, em uma janela swing. Existe alguma forma de fazer isso?
Desde já agradeço a atenção,
[],s
Alberto
E ai Pessoal,
Estou querendo achar uma forma de capturar as exceções do meu projeto e exibi-las, ao invés do console, em uma janela swing. Existe alguma forma de fazer isso?
Desde já agradeço a atenção,
[],s
Alberto
try {
// seu código
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
Isso vai usar JOptionPane para imprimir a mensagem de erro, mas não acho uma boa idéia, a mensagem pode ser meio grande! :mrgreen:
Use os métodos static da class JOptionPane.
Ex:
JOptionPane.showMessageDialog(null, “Mensagem”);
Thread.setUncaughtExceptionHandler
Deve resolver o seu problema. Todas as exceções Runtime que não são capturadas são enviadas para esse método. Você então pode redireciona-las para onde quiser. Aqui usamos para simplesmente dar uma única vez a mensagem “There are uncaught exceptions, see log for details” e gravamos a exceção em si num log textual.
Tudo muito limpo e sem aterrorizar o pobre do usuário.
[quote=von.juliano]
try {
// seu código
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
Isso vai usar JOptionPane para imprimir a mensagem de erro, mas não acho uma boa idéia, a mensagem pode ser meio grande! :mrgreen: [/quote]
Nunca faça um try…catch como esse. Se você tiver absoluta certeza que deve faze-lo, pense novamente e trate as exceções específicas. Senão novas exceções no futuro também poderão ser pegas. E lembre-se que exceções de Runtime também serão capturadas nesse código horrível aí em cima.
Do contrário, use um UncaughtExceptionHandler para capturar as exceções de Runtime que eventualmente você não conseguiu capturar e trate as exceções específicas, seja se livrando do problema, dando uma mensagem ao usuário ou redirecionando a exceção para a classe de cima.
Minha idéia é capturar as exceções que não estão tratadas no Try/Catch. Por exemplo: Ocorreu uma exceção em uma SQL que não está tratado, o erro irá ocorrer e irá gerar no console. Eu quero capturar essa exceção e mostrar em uma janela.
=)
Obrigado pelas dicas pessoal. Pesquisei a dica do ViniGodoy e consegui fazer o que estava querendo. Segue abaixo o código implementado:
No Main:
...
Thread.setDefaultUncaughtExceptionHandler(
new LogExceptions()
);
...
Classe que captura as exceções
class LogExceptions implements Thread.UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e) {
JOptionPane.showMessageDialog( null, e.toString());
}
}
Valeu pela dica, estava procurando exatamente por isso mesmo!!
Abraços!
Obrigado.
De nada.
É estranho receber agradecimento 2 anos depois de dar a dica…
:lol:
É porque estou começando com java agora e, como precisei disso, procurei no fórum e achei sua dica!
Abraço!
[quote=ViniGodoy]De nada.
É estranho receber agradecimento 2 anos depois de dar a dica…
:lol: [/quote]
Que sejam 5 anos então.
Obrigado! Me ajudou a fazer uma confirmação!
Ola ViniGodoy
Não estranhe !.. porque suas dicas, sejam elas antigas ou recentes, ajudam muitas pessoas …
Isso significa que vc consegue enxergar a necessidade dos outros …
valeu