[firebase-br] when any do - alguem já utilizou?

Alexandre Sousa dave.malkavian em gmail.com
Sex Jul 18 09:15:51 -03 2008


Ola Cleber,

O tratamento de exceção do firebird fuciona um pouco diferente das 
linguagens de programação.

Quando você coloca um bloco when...do ele tratará qualquer exceção que 
aconteceu em qualquer parte do código antes do bloco.

Na sua procedure ficaria assim:

CREATE PROCEDURE TESTE
RETURNS (
    VALOR_PAGO INTEGER)
AS
begin
  VALOR_PAGO = 24;

  valor_pago = valor_pago / 0;

  WHEN ANY do begin
    /* tratamento em caso de divisão por zero */
  end

  suspend;
end;

A melhor coisa é ao invés de usar ANY colocar algo mais específico, como o 
código de erro gerado na operação acima. Isso torna a aplicação mais 
"bonita".

Em resumo é isso ai

Espero ter ajudado

Alexandre Sousa
----- Original Message ----- 
From: "Cleber Zulian" <cleber em agrosoftrs.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, July 17, 2008 7:04 PM
Subject: [firebase-br] when any do - alguem já utilizou?


Alguem já utilizou o tratamento de exceções no firebird 2.0?
estive tentando fazer algum exemplo, mas não consegui ainda entender a
real utilização.
Pelo que percebi,  colocando uma instrução que geraria uma exception
dentro do bloco when any, a exception não seria retornada e o processo
seria comitado até antes deste bloco.
Usando no exemplo abaixo, depois que uso when any não pode existir mais
nada na procedure, senão não compila. Se tirar o trecho  "  VALOR_PAGO = 15;
                                                            suspend; "

dai compila. Alguem pode explicar melhor essa funcionalidade?

CREATE PROCEDURE TESTE
RETURNS (
    VALOR_PAGO INTEGER)
AS
begin
  VALOR_PAGO = 24;

  WHEN ANY do begin
    valor_pago = valor_pago / 0;
  exception;
  end

VALOR_PAGO = 15;

  suspend;

end

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: 
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista