Histórico da Página
Toda execução do REST é
...
protegida pela camada do tlppCore, evitando falta de retorno ou outros efeitos colaterais quando houver erros de runtime.
Embora haja um tratamento padrão para os erros, é possível customizar esse tratamento através da chamada de uma função configurada
...
no onError. Sendo assim, o usuário pode, por exemplo, enviar por e-mail o erro, gerar eventos de monitoramento, ou seja, conforme a necessidade de cada um.
Parâmetros
A função customizada de tratamento de erro recebe o objeto oError
...
.
Retorno
Não há
...
retorno.
Exemplo
Nesse exemplo, padronizamos o retorno de mensagem com um código de rastro e deixamos para uma função de Tratamento de erro u_TrataErro(), essa função estaria registrando o erro em local de fácil localização posterior para que o administrador de sistema tome as devidas providências.
Bloco de código |
---|
...
function U_onError( oError as object ) |
...
|
...
local cCodeTrace := U_getCodeTrace() as character |
...
...
local cFault := '' as character |
...
/* Propriedades de oError ---------------------- oError:errorstack ( "char" - Contém um resumo das informações do erro, com nome do usuário logado, nome da máquina, data e hora da ocorrência, nome da função onde ocorreu o erro, nome do arquivo que contém a função, linha do arquivo onde houve o erro e build do binário utilizado) oError:description ( "char" - Descrição do erro) oError:severity ( "num" - Indica a severidade do erro) oError:operation ( "char" - Atributo usado em erros internos de alias e funções, indicando em qual alias ou qual função houve erro) oError:genCode ( "num" - ontém um valor numérico inteiro que representa um código de erro genérico do AdvPL relacionado a ocorrência) oError:errorenv ( "char" - Contém as informações das variáveis utilizadas em cada nível de stack do programa no momento em que é consultado o valor da propriedade e não no momento do lançamento do erro) */ |
...
...
U_TrataErro( cCodeTrace, oError:genCode, oError:description ) |
...
|
...
...
cFault += '{' |
...
...
cFault += '"code":"' + cCodeTrace + '",' |
...
...
cFault += '"message":"um erro interno ocorreu, procure o administrador do sistema"' |
...
...
cFault += '}' |
...
|
...
...
if ( type('oRest') == 'O' ) |
...
...
oRest:SetFault( cFault ) |
...
...
endif return Nil |
Nesse exemplo, padronizamos o retorno de mensagem com um código de rastro e deixamos para uma função de Tratamento de erro U_TrataErro(), essa função estaria registrando o erro em local de fácil localização posterior para que o administrador de sistema tome as devidas providências.
Esse é somente um exemplo do que pode ser feito através desse Callback.
Observações:
- Se o onError for implementado, a mensagem de erro só será exibida em console caso o desenvolvedor implemente sua impressão (através do conout por exemplo)
...