Telescope (core)
Quando usar throw ou pushError no tratamento de erros?
ADS.FAQ-1290
Prefira sempre usar o comando throw
para reportar a ocorrência de um erro (exceção).
As poucas situações onde o push deve ser usado são as seguites:
- Quando for necessário incluir apenas um WARNING (a transação continua, mas uma mensagem de advertência deve ser enviada para o usuário)
- Quando a exceção está relacionada ao não cumprimento de uma validação identificada durante uma ação PRÉ. Note que as validações formais do Telescope são funções que apenas retornam
true
ou false
e normalmente não fazem throw
e nem pushError
.
A diferença entre os dois procedimentos é que o comando throw
encerra imediatamente a execução e o comando pushError
registra a mensagem mas continua o processamento até o final da "etapa", ou seja, continuarão a executar os outros métodos PRE ou POS que fazem parte da operação que está sendo executada.
Nas entidades:
- Executa todos os eventos PRE
- Executa todas as regras de ações mapeadas por PRE
- Executa todas as regras de validação (qualquer false apenas registra o erro)
- Se tiver erros, aborta com
throw
. - Executa a ação propriamente dita
- Executa todos os eventos POS
- Executa todas as regras de ações mapeadas por POS