EVENTO OU EXCECAO

JABA 14/10/2012 14:32:51
#412034
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][/th]
Cabecalho
[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]

[th][/th]
Cabecalho
[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
AJSO 14/10/2012 22:47:14
#412044
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
JABA 15/10/2012 11:09:17
#412058
AJSO, essa implementação é apenas para notificar que o produto no estoque está terminando. O ideal seria usar Exception mesmo, para esse caso?

vlw
KERPLUNK 15/10/2012 11:49:00
#412060
Resposta escolhida
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...
AJSO 15/10/2012 14:18:58
#412076
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
SOCRAMSA 15/10/2012 14:32:27
#412077
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
JABA 15/10/2012 15:13:39
#412080
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