none
Retornar objeto ao estado original RRS feed

  • Pergunta

  • Olá, boa tarde!!!

    De acordo com o código abaixo, eu estou atribuindo um novo valor às propriedades do caixa. Gostaria de saber dos colegas o seguinte: se der erro na hora de atualizar no banco de dados, o objeto caixa ficará com os novos valores atribuídos. Sendo assim, é correto eu retornar o objeto ao estado original com uma reatualizada na exceção capturada ou existe outra forma melhor de lhe dar com isso?

    Public Class Caixa
    
    Public Sub fechar(data As String, hora As String)
            If EstaFechado() Then Throw New Exception("O caixa ja se encontra fechado")
                Try
                    _estadocaixa = Negocio.EstadoCaixa.fechado
                    _datafechamento = data
                    _horafechamento = hora
                    Caixa.Update(Me)
                Catch ex As Exception
                    Caixa.Refresh(Me)
                    Throw New Exception("Ocorreu um erro ao tentar fechar o caixa")
                End Try
        End Sub
    
    End Class
    

    vlw

    segunda-feira, 1 de outubro de 2012 18:41

Respostas

  • Entendi tuco, o que você pode fazer é antes alterar o objeto manter um clone dele, e se acontecer alguma exceção você volta ao estado anterior.

    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS

    • Marcado como Resposta RodrigoPorto terça-feira, 2 de outubro de 2012 17:48
    terça-feira, 2 de outubro de 2012 17:05

Todas as Respostas

  • Boa tarde,

    Acredito que você possa utilizar Destrutores e arbage Collector:

    Este link pode te ajudar: 

    http://www.macoratti.net/vbn5_ogc.htm

    segunda-feira, 1 de outubro de 2012 20:16
  • E ae tuco, blz cara? Não vejo problema, acredito que sim, uma outra abordagem que você pode fazer é tentar atualizar o banco novamente.

    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS

    segunda-feira, 1 de outubro de 2012 23:16
  • Rafael Reis, acho que você não interpretrou bem o que disse, pois o meu objeto Caixa foi modificado e por uma falha na tentativa de atualiza-lo no banco de dados, o objeto Caixa não esta mais no seu estado original (inicial). Como você pode observar no exemplo que citei, estou tentando retornar o objeto ao estado original pela excecao dando um Caixa.Refresh(Me), ou seja, ele vai pegar os dados do banco novamente. A dúvida é se essa é a melhor forma de resolver essa situação.
    terça-feira, 2 de outubro de 2012 15:27
  • Olá Janderson, tudo tranquilo sim.

    Quando eu dou um Caixa.Refresh(Me) la na Exceção, ele está exatamente fazendo o que você disse, que é ir no banco e pegar os dados novamente. Será que não tem uma outra forma de fazer isso sem ter que retornar ao Banco de Dados?

    terça-feira, 2 de outubro de 2012 15:32
  • Entendi tuco, o que você pode fazer é antes alterar o objeto manter um clone dele, e se acontecer alguma exceção você volta ao estado anterior.

    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCTS

    • Marcado como Resposta RodrigoPorto terça-feira, 2 de outubro de 2012 17:48
    terça-feira, 2 de outubro de 2012 17:05