Ir para conteúdo
  • Cadastre-se

dev botao

Capturar exceção sem tratar


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 884 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá a todos,

Eu possuo uma linha de código que irá tentar gravar dados em um campo de uma tabela. A questão é que alguns clientes ainda não possuem esse campo e consequentemente irá gerar uma exceção, então pretendo colocar o seguinte código:

try 
    ZQuery1.SQL.Text := 'UPDATE TABELA SET valor = 0';
    ZQuery1.ExecSQL;
 except 
    //Não fazer nada
end;

Como podem ver quando gerar a execução não irá fazer nada, mas coloquei em um try/except exatamente para não gerar a exceção. 

Nesses casos em que uma exceção é esperada e só não queremos que a mesma seja exibida ao usuário, é isso mesmo que é feito, colocar um except vazio??? Ou existe algum outro padrão mais elegante nesses casos?

Desde já agradeço a atenção.

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores
  • Solution

Sim.. isso é uma técnica.. chama-se de "Exceção muda"...

Você poderia nesse Except, rodar algum código que cria o novo campo no BD.

  • Obrigado 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Consultores
Em 10/11/2021 at 10:26, doidopb disse:

Ou existe algum outro padrão mais elegante nesses casos?

Um jeito mais elegante seria você testar a versão do BD antes de executar a SQL.

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Consultores
12 minutos atrás, doidopb disse:

Como você "versiona" seu BD? 

Existem ferramentas pra fazer isso de uma maneira mais profissional.

Mas dá pra fazer na mão usando o mesmo versionamento de código, basicamente usando um campo versão no BD.

Não sei se consigo descrever um processo todo, mas poderia ser algo assim:

  • criar um campo "versao" numa tabela de configurações do banco. Preferencialmente uma tabela com só umlinha;
  • Toda modificação do BD precisa ser feita por scripts versionados
  • Valide a versão do BD sempre antes de executar o script;
  • Atualize os clientes sempre usando esses scripts;

Daí o passo a passo é mais ou menos o seguinte:

  • Sempre que adicionar, remover ou renomear um campo ou tabela, você gera um script ao invés de fazer a modificação na mão no BD;
  • Junte todas os scripts necessários para uma versão em um script que vai atualizar o campo responsável pela versão no BD;
  • Faça testes executando os scripts num banco de dados de testes;
  • Curtir 1
  • Obrigado 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
3 minutos atrás, EMBarbosa disse:

Existem ferramentas pra fazer isso de uma maneira mais profissional.

Mas dá pra fazer na mão usando o mesmo versionamento de código, basicamente usando um campo versão no BD.

Não sei se consigo descrever um processo todo, mas poderia ser algo assim:

  • criar um campo "versao" numa tabela de configurações do banco. Preferencialmente uma tabela com só umlinha;
  • Toda modificação do BD precisa ser feita por scripts versionados
  • Valide a versão do BD sempre antes de executar o script;
  • Atualize os clientes sempre usando esses scripts;

Daí o passo a passo é mais ou menos o seguinte:

  • Sempre que adicionar, remover ou renomear um campo ou tabela, você gera um script ao invés de fazer a modificação na mão no BD;
  • Junte todas os scripts necessários para uma versão em um script que vai atualizar o campo responsável pela versão no BD;
  • Faça testes executando os scripts num banco de dados de testes;

Muito obrigado pelo detalhamento meu amigo, eu faço assim porque criei pensei nesse procedimento e deu certo, mas sempre tive a curiosidade de saber se é assim mesmo que o pessoal faz.

Abraços

Link para o comentário
Compartilhar em outros sites

  • Consultores

Melhor mesmo é usar uma ferramenta, como https://www.liquibase.org/

Mas aí depende muito do BD e das circunstâncias.

 

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 884 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...