EXCECOES
Olá pessoal, Boa tarde!
Gostaria de saber qual a melhor maneira de trabalhar com exceções.
por exemplo:
public sub adicionar(novoitem as item)
try
dim item as item = me.localizarItem(novointem) [ô]Este metodo lanca uma excecao senao encontrar o item desejado
if item is nothing then
[ô]Caso nao encontre, ele cria o item
criarItem(item)
else
[ô]Caso ele encontre, ele só incrementa
incrementarItem(item)
end if
catch ex as exception
[ô]Aqui existe uma duvida. O correto é trabalhar a mensagem para o usuario final aqui ou na camada de apresentacao?
throw ex
end try
end sub
ou
public sub adicionar(novoitem as item)
try
dim item as item = me.localizarItem(novointem) [ô]Este metodo lanca uma excecao senao encontrar o item desejado
[ô]Se chegar aqui é porque o item foi localizado
incrementarItem(item)
catch ex as ItemNaoEncontradoexception [ô]Aqui eu ja coloquei a excecao do metodo localizar
criarItem(item)
[ô]Aqui existe uma duvida. O correto é trabalhar a mensagem para o usuario final aqui ou na camada de apresentacao?
throw ex
end try
end sub
Alguem poderia me ajudar com as boas praticas quando o assunto é Excecao?
Muito Obrigado pessoal. vlw
Gostaria de saber qual a melhor maneira de trabalhar com exceções.
por exemplo:
public sub adicionar(novoitem as item)
try
dim item as item = me.localizarItem(novointem) [ô]Este metodo lanca uma excecao senao encontrar o item desejado
if item is nothing then
[ô]Caso nao encontre, ele cria o item
criarItem(item)
else
[ô]Caso ele encontre, ele só incrementa
incrementarItem(item)
end if
catch ex as exception
[ô]Aqui existe uma duvida. O correto é trabalhar a mensagem para o usuario final aqui ou na camada de apresentacao?
throw ex
end try
end sub
ou
public sub adicionar(novoitem as item)
try
dim item as item = me.localizarItem(novointem) [ô]Este metodo lanca uma excecao senao encontrar o item desejado
[ô]Se chegar aqui é porque o item foi localizado
incrementarItem(item)
catch ex as ItemNaoEncontradoexception [ô]Aqui eu ja coloquei a excecao do metodo localizar
criarItem(item)
[ô]Aqui existe uma duvida. O correto é trabalhar a mensagem para o usuario final aqui ou na camada de apresentacao?
throw ex
end try
end sub
Alguem poderia me ajudar com as boas praticas quando o assunto é Excecao?
Muito Obrigado pessoal. vlw
Fiz um artigo sobre isso uns tempos atrás...
tehno a mesma dúvida, já pensei em criar um projeto que controle as exceções, assim importaria a DLL desse projeto em todos os outros.
Assim as mensagens seriam padronizadas, porém em qual camada é a melhor pra validar os erros? Acho que deve ser em todas, mas pode acontecer um erro na de BD que explode 3 erros
Assim as mensagens seriam padronizadas, porém em qual camada é a melhor pra validar os erros? Acho que deve ser em todas, mas pode acontecer um erro na de BD que explode 3 erros
Já deram uma lida no artigo que citei?
Já sim, muito bom KerpLunk.
Mas onde que eu devo lançar as mensagens para o usuario final ?
vlw
Mas onde que eu devo lançar as mensagens para o usuario final ?
vlw
Depende de como vai tratar. O ideal é fazer o tratamento em todas as camandas, com as exceptions especÃficas para cada erro(se quiser, até mesmo as personalizadas), e na última camada, a de apresentação tratar todos as exceptions que todos os métodos de todas as camadas subsequentes podem lançar. As camadas que tem uma camada [Ô]superior[Ô], devem sempre lançar a exception para a mesma, para que a informação de debug seja precisa.
Entao quer dizer que eu tenho que tratar todas as excecoes (mesmo que seja umas 20) na camada de apresentacao, gerando uma mensagem diferente para cada excecao ou eu posso resumir tudo numa unica mensagem na camada de apresentacao?
vlw
vlw
Você pode simplesmente tratar [Ô]Exception[Ô] sem ser uma exception especÃfica na camada principal(desde que nas camadas subsequentes, as exceções também sejam tratadas e lançadas), mas isso vai fazer o tratamento menos eficiente. Você pode criar as suas próprias exceções e ter um tratamento mais especÃfico, por exemplo, uma exceção [Ô]ProdutoNaoEncontradoException[Ô], quando ela chegar na camada principal, vai estar bem claro o problema e com isso o tratamento fica mais eficiente.
Na pergunta inicial que eu fiz (a mensagem do topico criada) é mais correto eu tratar a criacao de um obj (criarItem(item)) pela excecao ou é mais indicado eu verificar por if como na primeira opcao?
vlw
vlw
Citação:Na pergunta inicial que eu fiz (a mensagem do topico criada) é mais correto eu tratar a criacao de um obj (criarItem(item)) pela excecao ou é mais indicado eu verificar por if como na primeira opcao?
Bem, tratamento por blocos de decisão, não são 100% seguros, pois apesar de ser possÃvel prever todos os erros possÃveis em um determinado procedimento, isso daria mais trabalho do que fazer um tratamento de exceção genérico. Blocos de decisão podem falhar, sempre há a possibilidade de um erro ocorrer e uma exceção não tratada ser lançada.
Seria interessante prever o máximo de situações possÃveis usando blocos de decisão, mas isso não exclui a necessidade de tratamento de exceções, ainda que genérico.
KerpLunk, agradeço pelas dicas, foi sensacional.
Muito obrigado
vlw
Muito obrigado
vlw
Tópico encerrado , respostas não são mais permitidas