Page tree
Skip to end of metadata
Go to start of metadata



Recupera e/ou define um bloco de código para ser avaliado quando ocorrer um erro em tempo de execução.

Sintaxe

ErrorBlock( [ bErrorHandler ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

bErrorHandler

bloco de código

Bloco de código que será executado sempre que houver um erro em tempo de execução.

 

 

Retorno

Nome

Tipo

Descrição

bRet

bloco de código

Retorna o bloco de código de tratamento de erro corrente.

Observações

  • Essa função define a atuação de um manipulador (handler) de erros sempre que ocorrer um erro em tempo de execução. Para isso, o manipulador de erro, é especificado com um bloco de código da seguinte forma:

{ |<objError>| <lista de expressões>, ...}

Sendo:

<objError> é um error object que contém informações sobre o erro. Dentro do bloco de código, é possível enviar mensagens ao error object para obter informações sobre o erro. Porém, se o bloco de tratamento de erros retornar verdadeiro (.T.), a operação que falhou é repetida; caso contrário, falso (.F.), o processamento recomeçará.

Se não for especificado nenhum bloco de código, no parâmetro em <bErrorHandler>, utilizando a função ErrorBlock(), e ocorrer um erro em tempo de execução, o bloco de tratamento de erros padrão é avaliado. Este manipulador de erros exibirá uma mensagem descritiva na tela, ajusta a função ErrorLevel para 1, e depois sairá do programa (QUIT).

Como essa função retorna o bloco de tratamento ao de erros corrente, é possível especificar um bloco de tratamento de erros para uma operação gravando-se o bloco de manipulação de erros correntes e depois recuperando-o após o final da operação. Além disso, uma importante conseqüência do fato de os blocos de tratamento de erros serem especificados como blocos de código, é que podem ser passados para rotinas e funções definidas por usuário e depois retornadas como valores.

Exemplos

User Function Exemplo()
  // Salva bloco de código do tratamento de erro
  Local oError := ErrorBlock({|e| MsgAlert("Mensagem de Erro: " +chr(10)+ e:Description)})

  cExpr := "aaa"

  If !Empty(cExpr)
    Begin Sequence    // Força erro, enviando carácter onde deveria ser numérico
    cNum := StrZero(cExpr,5)
    MsgAlert( cNum )
    Return .T.
    End Sequence
  EndIf

  ErrorBlock(oError)
Return

Abrangência

Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10

  • No labels