Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

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 Callback 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)
  • Caso seja configurado o Callback de

...

  • onError e, nem na função configurada, nem momento anterior o Código de Status ou a Mensagem de retorno tenha sido modificada pela implementação do usuário, a camada tlppCore irá garantir que o serviço REST retorno o código 500 - Internal Server Error.