Deve relatar o texto da mensagem de exceções?

Considere algum código que pode gerar uma exceção verificada (uma exceção do tipoException). Seu códigocatch é a exceção, é claro. Você não apenas engole a exceção, mas seu código a relata de alguma forma ao usuário por meio da interface do usuário. Em um arquivo de log, talvez, ou usando um pop-up da GUI.

O texto que você denuncia ao usuário deve incluir o texto da mensagem da exceção. Ou seja, o texto fornecido porThrowable.getMessage() ouThrowable.getLocalizedMessage()?

Acho que não, mas parece que muitos discordam de mim. Então, o que eu entendi errado? Meu argumento é o seguinte.

A mensagem foi criada quando a exceção foi lançada. Portanto, na melhor das hipóteses, pode fornecer apenas informações de nível muito baixo, o que pode ser inadequado para gerar relatórios a um usuári Filosoficamente, o uso da mensagem parece-me contra todo o ponto de exceção, que consiste em separar a detecção e o início do tratamento de erros (othrow parte) da conclusão do manuseio e relatório (ocatch parte). Usar a mensagem significa que a mensagem deve ser boa para relatórios, o que transfere a responsabilidade de gerar relatórios para o local que deve ser responsável apenas pela detecção e iniciação. Ou seja, eu argumentaria que ogetMessage() parte do design deThrowable foi um erroA mensagem não está localizada. Apesar do nome,getLocalizedMessage() não é muito bom porque você talvez não saiba qual localidade deseja usar até que vocêcatch a exceção (o relatório deve ser lido em um log do sistema pelos administradores do sistema em inglês ou deve aparecer em uma janela para o usuário francês da GUI? Ouvi dizer que o Java 7 tem uma hierarquia de exceções muito melhorada paraIOException, permitindo lidar com diferentes tipos de erosores de E / S em diferentcatch cláusulas, tornando ogetMessage() texto menos importante. Isso implica que até os designers de Java se sentem um pouco desconfortáveis com ogetMessage().

Não estou perguntando se é útil relatar o rastreamento de pilha. Um rastreamento de pilha só será útil para uma exceção que sugere um bug. Ou seja, para uma exceção desmarcada. Penso que nessas circunstâncias, fornecer os detalhes de baixo nível da mensagem de exceção não é apenas útil, mas obrigatório. Mas minha pergunta lida com exceções verificadas, como arquivo não encontrado.

questionAnswers(4)

yourAnswerToTheQuestion