Dilema no Tratamento de Erros

4 respostas
the_negao

Pessoal,

Estou em um dilema e gostaria de saber se posso contar com a ajuda e a opinião de vocês…

É o seguinte… muitas vezes falamos em páginas de erros, e exibição dos erros.

Daí vem meu questionamento… é correto exibir o erro da exception lançada para o usuário final ou devemos fazer o devido tramamento?

Ps.: Case sim, qual seria o melhor procedimento?
Ah! Já faço o lançamento de erros em um arquivo de Log.

Agradeço desde já!

4 Respostas

T

Em termos de segurança e de usabilidade, é ruim mostrar o stack trace para o usuário. É melhor ter uma mensagem e um código numérico:

E123.456 - A rebimboca da parafuseta explodiu. Favor tentar mais tarde.

onde esse código numérico pode ser consultado em um manual do suporte, para que possa ser tomada alguma providência.

Uma coisa que se faz muito é incluir esse “stack trace” em um comentário na página HTML, e se for necessário pedir ao usuário do seu piloto “encarecidamente” mandar o “view source” por email para você. Continua sendo falha de segurança, mas pelo menos você não fica “na roça” se houver algum problema.

the_negao

Você (thingol) ou alguém teria algum material para estudo ou exemplo de como efetuar esse tratamento de erros?

Porque sempre efetuo no catch(… ex){throw ex}

Daí eu faço esse tratamento no bloco do catch ou no próprio JSP ou tem outra forma?

Pode parecer perguntas idiotas, mas é que ainda estou em aprendizagem…

Ah! Um exemplo de tratamento de erro: Como informar ao usuário que o SGBD está inativo ou a senha do BD não está sendo validada, porque em ambas exceptions lançadas são sempre [color=darkred]org.hibernate.exception.GenericJDBCException: Cannot open connection?[/color]

Ps.: Eu utilizo Struts + Hibernate

Pedrosa

Uma coisa não tão sofisticada como a solução do thingol, porém eficiente.

No web xml configure redirecione para uma pagina de erro:

<error-page>
    <exception-type>java.lang.Exception</exception-type>
         <location>/erro.jsp</location>
    </error-page>

Nesse caso qualquer exception que ocorrer redireciona para essa página de erro, coloque uma mensagem mais amigável.

//erro.jsp

<%@ page isErrorPage="true" %>
<html>
Um erro ocorreu.<br/>
${pageContext.errorData.throwable}
</html>
the_negao

Ae Pedrosa,

Esse esquema que você recomendou eu já faço.

É que gostei da sugestão do thingol e gostaria de estudar um pouco mais sobre uma solução sofisticada.

Criado 23 de outubro de 2006
Ultima resposta 24 de out. de 2006
Respostas 4
Participantes 3