
Recupera e/ou define um bloco de código para ser avaliado quando ocorrer um erro em tempo de execução. SintaxeErrorBlock( [ bErrorHandler ] )
|
ParâmetrosNome | 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. |
|
|
RetornoNome | Tipo | Descrição |
---|
bRet | bloco de código | Retorna o bloco de código de tratamento de erro corrente. |
ObservaçõesEssa 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. ExemplosUser 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ênciaAdvanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 |