Obtenha o máximo de informações das exceções

August 15, 2010

Estou experimentando o Google Guice em um projeto que estou desenvolvendo em Java, estou tentando configura-lo para injetar o Session do Hibernate nos meus serviços, e por algum motivo estou recebendo uma exceção ao instanciar o SessionFactory e esta é a mensagem que estou recebendo:

[ERROR]1) Error in custom provider, org.hibernate.InvalidMappingException: Could not parse mapping document from resource Cliente.hbm.xml
[ERROR] at br.com.crystalpoll.hibernate.HibernateModule.configure(HibernateModule.java:10)
[ERROR] while locating org.hibernate.Session
[ERROR] for parameter 0 at br.com.crystalpoll.domain.cliente.Clientes.(Clientes.java:12)
[ERROR] while locating br.com.crystalpoll.domain.cliente.Clientes
[ERROR] for parameter 0 at br.com.crystalpoll.ui.server.customer.listing.GetCustomersHandler.(GetCustomersHandler.java:45)
[ERROR] while locating br.com.crystalpoll.ui.server.customer.listing.GetCustomersHandler

Tudo que ele me permite saber sobre o erro do Hibernate é “org.hibernate.InvalidMappingException: Could not parse mapping document from resource Cliente.hbm.xml”.

E quanto ao stack trace da exceção? E quando às exceções primárias (a cadeia de exceções que foi sendo lançada e que culminou nessa org.hibernate.InvalidMappingException)?

Não sei se quem engoliu a exceção foi o Guice (aparentemente foi) ou o Gwt-Platform, um outro framework que uso nesse projeto e que em outros momentos já mostrou esse comportamento. De qualquer forma, aí vão duas recomendações:

  • Sempre preserve a causa primária das suas exceções. Isto é, se você capturou uma exceção X e em função disso você disparou uma exceção Y, procure manter uma referência a X em Y. Java sempre suportou isso, e o Delphi recentemente passou a suportar tambem. Isso ajuda muito na hora de interpretar o erro e descobrir o que está errado
  • Se você for logar uma exceção, jamais se esqueça de logar a pilha de chamadas que levou àquela exceção e tambem às que as originaram. O Delphi infelizmente não tem esse recurso out-of-the-box (o que para mim é uma vergonha), mas é possível conseguir isso com pacotes de terceiros como o madExcept ou EurekaLog.

Leave a Reply

Spam protection by WP Captcha-Free