Remover o printStacktrace

Olá pessoal, tudo bem?

Tenho uma antiga dúvida e gostaria de ouvir a opnião de vocês.
É aconselhável remover o e.printStackTrace() do catch de uma versão final de um programa?

Se você está digitando uma dúvida aqui no fórum e seu navegador fechar de repente, você gostaria de saber o motivo e aonde ocorreu o erro?

Este também é o meu pensamento…
Eu estou trabalhando em um sistema que os caras removeram os printStacktrace() e deixaram apenas mensagens(JOptionPane), agora pra capturar esses erros não está sendo coisa fácil.

Sugestão seria ter um arquivo de log ou uma tabela no banco de dados
quando houver erro exibe a sua mensagem para o usuário e registro esse erro no seu log ou na tabela

Um código bem feito praticamente nunca irá capturar exceções só para loga-las ou imprimir o stack trace.

Você faz o seguinte:

a) Exceptions verificadas: Ou você captura e trata (por exemplo, mostrando uma mensagem de erro, ou ativando uma rotina de recupeção), ou você relança como uma RuntimeException;
b) Exceptions não verificadas: Ou você trata, ou deixa que o UncaughtExceptionHandler da thread a trate. Nesse caso, esse cara gera o tal log de erro.

Isso deixa seu código bastanta limpo de verificações de exception, e bastante seguro também. Algumas APIs, como o Spring, já transformam exceções verificadas em não verificadas nos casos em que não há muito o que fazer (como o caso de lidar com BD).

Quase esqueço. Em aplicações web, a maioria dos web servers já implementa o uncaught exception handler para quando um servlet ou uma thread dentro de um serlet é abortada devido a uma exception. Nesse caso, basta configurar o servidor para gerar logs automaticamente.

Mas no caso ai pelo visto é um código não bem feito e sem stacktrace… ai é tenso

Sim, se tiver coisas como

try { } catch (Exception e) { //Vazio }

Aí nem Jesus salva.

E exatamente desse jeito que o código se encontra:

try {
     //Códigos e mais códigos
} catch (Exception ex) {
    JOptionPane.showMessageDialog(null, "Ocorreu um erro");
}

:frowning: :frowning: :frowning: :frowning: :frowning: