| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2006 22:14:31
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
Olá pessoal,
Qual o melhor modo de tratar exceções exceções de infraestrutura (HibernateException, FinderException, NonUniqueObjectException, SQLException, CreateException, EJBException, etc) e exceções de erro de programação (NullPointerException, ClassCastException, etc) na camada dos EJBs? Como vocês fazem em geral? Uma opção bem comum é encapsular uma exceção unchecked e lançar, e deixar que o cliente cuide disso...
E, por extensão, chega na camada web, aka, actions. Como vocês fazem o tratamento? Lançam a exceção e deixam que o conteiner logue e usa os recursos da api para redirecionar para uma página de erro? Ou vocês mesmos tem um código de log e redirecionamento para uma página de erro?
Qual o melhor jeito e por que?
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2006 17:28:57
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
faz duas semanas que eu postei isso. Ninguém tem definido na sua arquitetura como tratar exceções em aplicações J2EE?
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2006 18:29:30
|
Daniel Quirino Oliveira
Moderador
![[Avatar]](/images/avatar/846c260d715e5b854ffad5f70a516c88.png)
Membro desde: 23/03/2003 23:57:34
Mensagens: 3299
Localização: Awawawawa (Araraquara) - SP
Offline
|
microfilo wrote:faz duas semanas que eu postei isso. Ninguém tem definido na sua arquitetura como tratar exceções em aplicações J2EE?
Não existe uma estratégia única para isso, Rubem. Cada projeto tem uma forma diferente de lidar com exceções. Tem gente que simplesmente as ignora (o que é um erro), outros simplesmente logam em algum lugar e dão seqüência aos processos, outros capturam a exceção, logam e re-lançam para camadas superiores, sendo que cada uma destas 3 estratégias (podem existir mais estratégias) podem ser implementadas sob N-maneiras. Acho que cabe mais uma discussão em nível de projeto (talvez aí com a sua equipe) sobre este assunto, mas realmente não existe um padrão para tratar exceções.
|
Daniel Quirino Oliveira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2006 19:57:52
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Não tinha visto esse post. Enfim, aqui eu adoto que todas exceptions de infra são unchecked e são apenas tratadas no layer externo da aplicação (exception handlers do struts, por exemplo). Exceptions que dizem respeito à lógica de negocio são checked e normalmente dá pra contar todas com 1 mão apenas todas do projeto.
Em vários casos temos catch p/ exceptions unchecked para decorar elas com maior informação de contexto para melhorar a rastreabilidade, mas só.
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2006 21:12:56
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
Daniel Quirino Oliveira wrote:
Não existe uma estratégia única para isso, Rubem. Cada projeto tem uma forma diferente de lidar com exceções. Tem gente que simplesmente as ignora (o que é um erro), outros simplesmente logam em algum lugar e dão seqüência aos processos, outros capturam a exceção, logam e re-lançam para camadas superiores, sendo que cada uma destas 3 estratégias (podem existir mais estratégias) podem ser implementadas sob N-maneiras. Acho que cabe mais uma discussão em nível de projeto (talvez aí com a sua equipe) sobre este assunto, mas realmente não existe um padrão para tratar exceções.
É Danieal, é uma decisão de arquitetura de cada projeto, mas dependendo de como for feito, pode agilizar ou complicar o bugtracking.
Geralmente sigo o que o louds falou, faz mais sentido. Exceto com MDBs, em MDBs eu capturo mesmo as de infra e logo. A única diferença é que fica a cargo do próprio container logar (e o Log4J esta com uma configuração customizada para cada produto.).
Eu estava querendo saber se existem outras opções melhores.
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/07/2006 11:41:54
|
Fabricio Cozer Martins
GUJ Ranger
![[Avatar]](/images/avatar/2ecd2bd94734e5dd392d8678bc64cdab.jpg)
Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline
|
microfilo wrote:Eu estava querendo saber se existem outras opções melhores.
Tratamento de exceções é um concern que deve ser tratado em paralelo, basicamente existem dois tipos que eu considero para tratar exceções, uma oriunda de operações do ambiente e outras das regras de negócio que foram violadas, por exemplo: SystemException e ( ApplicationException ou BusinessException ), e de uma forma ou de outra elas precisam ser exibidas para um determinado tipo de usuário, que pode ser um administrador do sistema, ou um usuário comum, devem a depender do tipo ser armazenadas em log.
Em exceções do tipo EJBException, e suas derivadas trata-se em uma classe HandlerException e que uma forma bem adequada para resolver esse problema com modularidade e reusabilidade é usando AOP. Com AOP você deixa o desenvolvedor livre de fazer chamadas explícitas no tratador de exceções, pois como ele é um aspecto, então agirá sobre os joinpoints definidos nos pointcuts. É formidável a maneira sucinta que esse concern é concebido com AOP.
Dê uma procurada no google:
sugestão de busca:
http://www.google.com.br/search?hl=pt-BR&q=handler+j2ee+exceptions+aop&btnG=Pesquisa+Google&meta=
|
Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4 |
|
|
 |
|
|