Não mostrar a exception no console. Tem como?

6 respostas
J

Galera,

ao executar uma aplicação via console, quando ocorre um erro numa dependência printa toda a exception na console(mesmo com Catch sem e.printStackTrace), tem como suprimir isso?

Valeu.

6 Respostas

ederson_js

Creio que vc vai ter que cofigurar dentro de seu servidor (tomCat, Jboss etc…)

ederson_js

Mas só uma pequena dúvida, por que você deseja fazer isso ?

ViniGodoy

Se sua aplicação é console, basta definir a saída de erro padrão para outro lugar. Por exemplo, poderia ser para um arquivo:

System.setErr(new PrintStream(new File("C:\logs\minhaAplicacao.log"));

Outra boa opção é usar a API de log do próprio Java:
http://onjava.com/pub/a/onjava/2002/06/19/log.html

A única opção que você não deve seguir é desaparecer completamente com a mensagem de erro. Afinal, elas ajudam a descobrir qual é o problema que seu código passa.

Além disso, é importante também registrar um UncaughtExceptionHandler na sua aplicação. Procure sobre o método Thread.setUncaughtExceptionHandler, pois é ele que é chamado antes da exceção ser impressa. Capturando a exception lá e enviando para algum arquivo de log vc pode suprimi-la do console.

J

Não roda em servidor… é um jar executado via agendador…

ederson.js:
Mas só uma pequena dúvida, por que você deseja fazer isso ?

Esse jar é uma aplicação que verifica disponibilidade de outra aplicação, ou seja, verifica o status e printa a resposta no console(sysout).
O problema é quando a outra aplicação está indisponível(problema qualquer…) aí tenho dependências na minha aplicação que printa no console o “connection timeout” e todo o trace da exception também…

O administrador do servidor, tem um script que executa esse jar e “lê” esse resultado no console … nesse caso quando dá erro e é jogada a exception no console, o script se perde…

ederson_js

Entendi TUX, muito interessante essa sua aplicação, estou trabalhando em uma semelhante que é executada pelo CRONTAB, porém ela somente alimenta xml’s e reporta via socket.
Penso então que a resposta do VINI será a melhor opção.

Valeu

ViniGodoy

Só um detalhe. Erros a aplicação imprime no System.err e não no System.out. Mas existe os comandos setErr e setOut, caso vc precise redirecionar os dois.

Criado 25 de abril de 2011
Ultima resposta 25 de abr. de 2011
Respostas 6
Participantes 3