terça-feira, 3 de junho de 2014

Try...Catch...

Apagar registros por atualização direta em Genexus é uma aventura. Isso porque esse mecanismo não realiza o tratamento de integridade referencial, e se o registro é utilizado por outro, ocorre um erro/interrupção do programa, que sempre assusta bastante quem o recebe. 

Sempre nesses casos é preferivel utilizar Business Component, mas a atualização direta ainda guarda seus encantos principalmente quando se trata de um melhor desempenho.

Uma forma de evitar que o erro apareça nessa situação é envolve-la em um mecanismo de tentativa de execução, inexistente no Genexus, mas possível pela inclusão do código nativ
o. Alias esta prática é bem interessante e util em muitas ocasiões.

csharp try {
 for each
 where ClienteId = &clienteId
    delete
 endfor


csharp } catch (Exception e) { 
    msg('Nao foi possivel completar a operacao')
csharp }

Nao seria muito bom se houvesse já esse simples recurso de programação disponibilizado no Genexus? Eu acho que sim.