| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/05/2005 13:17:19
|
hivaj
JavaBaby
Membro desde: 07/02/2003 12:03:11
Mensagens: 93
Offline
|
Meu sistema tem a seguinte arquitetura:
MVC(Struts)
Business Delegate
SessionFacade(EJB stateless)
BusinessObject
DAO(JDBC)
TO e VL para trafegar os dados
Atualmente controlo os erros da seguinte maneira:
Os meu TO e VL tem dois atributos, int codErro e String msg. Uso estes atributos para definir o codigo e a mensagem de erro, na camada de apresentação verifico estes atributos com a intenção de passar uma mensagem amigavel ao cliente.
Estou querendo mudar, quer controlar as exception e disponibilizar um logging para a aplicacao, neste caso não utilizaria mais o modelo acima citado.no caso seria criado DAOException e BusinessException onde os erros seriam generalizados nestas exception, ou seja, a camada de business só receberia um DAOException, que seria lancado pela camada
de persistencia, neste caso a camada de persistencia trataria e faria o log detalhado do erro e depois lancava uma DAOException, a camada de negocio faria o mesmo e lancaria para camada de apresentacao que trataria a BusinessException e mandaria uma mensagem de acordo para o
cliente(browser)
O que voces acham, como voce tratam este assunto de tratamento de erros e a propagação dele entre as camadas...
Algum material na web para leitura complementar seria bem vindo...
Obrigado galera.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/05/2005 13:21:41
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Cuidado para não fazer muito wrapping de exceptions e não gerar logs repetidamente para o mesmo erro.
|
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) 24/05/2005 13:25:31
|
hivaj
JavaBaby
Membro desde: 07/02/2003 12:03:11
Mensagens: 93
Offline
|
Então louds, estou tentando tomar o maximo de cuidado para isto, pretendo logar nas camadas onde é o contexto do erro.
Mas voce acha a que esta opcao e melhor do que a minha atual, ou seja controlar atraves do atributos do to e do vo???
Na segunda opcao terei que criar varias checked exceptions, não seria um problema para o tamanho do sistema, perfomance, etc....
Obrigado pelo post....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/05/2005 13:34:05
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
Usar exception é uma solução muito superior.
Quanto ao uso de exceptions checadas ou não, esse é um longo debate, no forum devem ter algumas threads sobre o assunto. Minha opinião é que elas só devem ser checadas se existir algo que o cliente possa ou deva fazer em resposta (cancelar transação, fechar arquivo, retentar, etc).
Então se no teu sistema uma DAOException é fatal, não tem resposta senão avisar o usuario que não deu certo, coloca ela estendendo de RuntimeException. O que você pode fazer é colocar alguns atributos a mais nela e tua camada de negocios agarrar, acrescentar informação de contexto e re-arremessar a exception.
|
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) 24/05/2005 13:57:41
|
hivaj
JavaBaby
Membro desde: 07/02/2003 12:03:11
Mensagens: 93
Offline
|
Beleza louds...
Agradeço suas palavras...
Valeu!!!!
|
|
|
 |
|
|