EVENTO OU EXCECAO
Boa Tarde pessoal!!!
Gostaria da opnião dos colegas para o seguinte caso:
[txt-color=#007100]Caso 1: Lança uma exceção se a quantidade minima for excedida[/txt-color]
[th]
[txt-color=#007100]Caso 2: Lança um Evento se a quantidade minima for excedida[/txt-color]
[th]
O que é melhor nessa situação, usar exceção como no caso 1 ou usar Evento como no caso 2?
vlw
Gostaria da opnião dos colegas para o seguinte caso:
[txt-color=#007100]Caso 1: Lança uma exceção se a quantidade minima for excedida[/txt-color]
Cabecalho | [/th]
[txt-color=#0000f0]Public Class Produto Private _quantidademinima As Integer = 5 Property Quantidade As Integer Get Return _quantidade End Get Set (ByVal Value As Integer) _quantidade = _quantidade - Value if _quantidade < _quantidademinima Then throw new QuantidadeMininimaExcedidaException() End if End Set End Class[/txt-color] |
[txt-color=#007100]Caso 2: Lança um Evento se a quantidade minima for excedida[/txt-color]
Cabecalho | [/th]
[txt-color=#0000f0]Public Class Produto Private _quantidademinima As Integer = 5 Property Quantidade As Integer Get Return _quantidade End Get Set (ByVal Value As Integer) _quantidade = _quantidade - Value if _quantidade < _quantidademinima Then RaiseEvent QuantidadeMininimaExcedida End if End Set End Class[/txt-color] |
O que é melhor nessa situação, usar exceção como no caso 1 ou usar Evento como no caso 2?
vlw
Caro JABA
só irá utilizar exceção se de fato for gravar no banco.
Um erro deve ser identificado com Exception para ser interceptar o códiogo do erro tratado e gravado no banco.
No caso da Exception é passivo de tratamento para retorno do SET.
Já no caso da RaiseEvent teria que criar ou elaborar seus eventos externos e tratar para o SET para gravar ou gerar seu log no banco
Só usa RaiseEvent se precisar de um tratamento complexo de SET da sua entidade caso contrário utilize Exception por ser mais simples e tratar seu SET de massa de dados.
Boa Sorte
só irá utilizar exceção se de fato for gravar no banco.
Um erro deve ser identificado com Exception para ser interceptar o códiogo do erro tratado e gravado no banco.
No caso da Exception é passivo de tratamento para retorno do SET.
Já no caso da RaiseEvent teria que criar ou elaborar seus eventos externos e tratar para o SET para gravar ou gerar seu log no banco
Só usa RaiseEvent se precisar de um tratamento complexo de SET da sua entidade caso contrário utilize Exception por ser mais simples e tratar seu SET de massa de dados.
Boa Sorte
AJSO, essa implementação é apenas para notificar que o produto no estoque está terminando. O ideal seria usar Exception mesmo, para esse caso?
vlw
vlw
Citação:AJSO, essa implementação é apenas para notificar que o produto no estoque está terminando. O ideal seria usar Exception mesmo, para esse caso?
Exception, deve ser invocada quando uma exceção/erro ocorrer. O ideal nesse caso é chamar um evento mesmo...
Caros colegas concordo com vocês
é que como o cenário apresentado na entidade GET SET
O correto seria para um tratamento de um operador no caso o IF teria que apresentar este processo sempre.
Set (ByVal Value As Integer)
Try
[ô]Processo de comparação, calculo, outros operadores
_quantidade = _quantidade - Value
if _quantidade < _quantidademinima Then
RaiseEvent QuantidadeMininimaExcedida
End if
ou
[ô]Processo de comparação, calculo, outros operadores
_quantidade = _quantidade - Value
if _quantidade < _quantidademinima Then
throw new QuantidadeMininimaExcedidaException()
End if
Catch ex As Exception
[ô]interceptação do código do erro
[ô]Ou aqui no caso da utilização da RaiseEvent...............................
End Try
End Set
No caso este comparador simple de quantidade minima é um erro provocado e não um erro do processo. Mas se trata de um erro.
Nos dois cenários apresentado acima o tratamento pode ser simples ou elaborado
No caso de Exception será escrito apenas na camada de ENTIDADE.
No caso de RaiseEvent será escrito na camada de ENTIDADE e por sua vez estruturada na camada de NEGÓCIO.
Boa Sorte
é que como o cenário apresentado na entidade GET SET
O correto seria para um tratamento de um operador no caso o IF teria que apresentar este processo sempre.
Set (ByVal Value As Integer)
Try
[ô]Processo de comparação, calculo, outros operadores
_quantidade = _quantidade - Value
if _quantidade < _quantidademinima Then
RaiseEvent QuantidadeMininimaExcedida
End if
ou
[ô]Processo de comparação, calculo, outros operadores
_quantidade = _quantidade - Value
if _quantidade < _quantidademinima Then
throw new QuantidadeMininimaExcedidaException()
End if
Catch ex As Exception
[ô]interceptação do código do erro
[ô]Ou aqui no caso da utilização da RaiseEvent...............................
End Try
End Set
No caso este comparador simple de quantidade minima é um erro provocado e não um erro do processo. Mas se trata de um erro.
Nos dois cenários apresentado acima o tratamento pode ser simples ou elaborado
No caso de Exception será escrito apenas na camada de ENTIDADE.
No caso de RaiseEvent será escrito na camada de ENTIDADE e por sua vez estruturada na camada de NEGÓCIO.
Boa Sorte
Fiz um sistema de controle de estoque minimo um pouco diferente
Tenho no cadastro de produtos 2 campos
EST_FIS (Estoque fisico armazenado)
EST_MIN (Estoque minimo que pode haver na empresa)
Conforme da baixa do estoque fisico, em determinado periodo (o comprador no meu cliente define), gero um email / lista onde :
EST_FIS<=EST_MIN
Não uso função, excessão, apenas filtro nessa lista tudo que FISICO for MENOR OU IGUAL estoqueminimo, ai pode-se gerar uma lista, consulta ou email, conforme o que ficar mais facil ao cliente
Já tive clientes que preferiam alterar a cor do campo FISICO, e outros uma msg ABAIXO DO MINIMO em vermelho, ai ao consultar o item já aparecia que estava abaixo
Tenho no cadastro de produtos 2 campos
EST_FIS (Estoque fisico armazenado)
EST_MIN (Estoque minimo que pode haver na empresa)
Conforme da baixa do estoque fisico, em determinado periodo (o comprador no meu cliente define), gero um email / lista onde :
EST_FIS<=EST_MIN
Não uso função, excessão, apenas filtro nessa lista tudo que FISICO for MENOR OU IGUAL estoqueminimo, ai pode-se gerar uma lista, consulta ou email, conforme o que ficar mais facil ao cliente
Já tive clientes que preferiam alterar a cor do campo FISICO, e outros uma msg ABAIXO DO MINIMO em vermelho, ai ao consultar o item já aparecia que estava abaixo
Citação:Exception, deve ser invocada quando uma exceção/erro ocorrer. O ideal nesse caso é chamar um evento mesmo...
Acho que o Kerplunk tem razão, pois a ideia de notificação está mais para evento do que para exceção. Se eu trabalhar com exceção, a aplicação vai ter que parar para trata-la, no caso do evento, a aplicação sempre continuará rodando, mesmo se o evento não for capturado.
Tópico encerrado , respostas não são mais permitidas