Janio Aguiar

[RESOLVIDO] Desviar erro com EXCEPTION

7 posts in this topic

Dando erro em hAdd, o codigo não deveria ir para o DO do exception??

Nao tá indo

erroadd.png

Share this post


Link to post
Share on other sites

Eu faria assim Janio.

 

NextTitle("ATENÇÃO!")
IF Open(WIN_YesNo,""CONFIRMA INCLUSÃO?",1) = 1
   
  HReset(a16tdc)
  a16tdc.IS_DELETED = "N"
  a16tdc.CODIGO     = EDT_Codigo
  a16tdc.NOMDOC     = NoAccent(EDT_NomDoc)
  IF HADD(a16tdc) = True THEN
     ToastDisplay("REGISTRO INCLUIDO COM SUCESSO",toastShort,vaMiddle,haCenter)
  ELSE
     NextTitle("ATENÇÃO")
     Error("ERRO AO SALVAR REGISTRO"+ CR +HErrorinfo(hErrorMessage) )
     RETURN
  END    
END


 

 

2 people like this

Share this post


Link to post
Share on other sites

@José Willem Não seria um erro de integridade ao executar o HADD não retornando True ou False, sendo necessário interceptar o erro e mostrar uma mensagem ou desviar para outra função/rotina

Share this post


Link to post
Share on other sites

Eu pensava assim também, mas depois de muita pesquisa no help e ajuda de alguns amigos cheguei na conclusão que está correto, o nosso amigo Janio pode responder.

hadd.png

Share this post


Link to post
Share on other sites

Bom dia,

O que fiz foi iniciar um variavel com zero e testar cada hAdd e hModify. Se erro incrementa. Dessa forma eu teria como saber se houve erro em diversos hAdd e ainda desfazer transações, caso ocorram

ErroAdd.png

2 people like this

Share this post


Link to post
Share on other sites

Como você está dentro do exception, basta forçar o desvio indicando que uma exceção ocorreu, assim não precisa nem do seu contador
Altere a linha "IF HModify(a16cid) = False THEN nContaErro++" para "IF HModify(a16cid) = False THEN ExceptionThrow(1)"
Dessa maneira está sendo indicado manualmente que ocorreu uma exceção neste ponto do código e o fluxo vai ser desviado para o DO, onde você pode por exemplo, cancelar as transações
https://help.windev.com/en-US/?3034005&name=ExceptionThrow

3 people like this

Share this post


Link to post
Share on other sites
Em 10/04/2020 at 8:06 AM, Janio Aguiar disse:

Dando erro em hAdd, o codigo não deveria ir para o DO do exception??

Nao tá indo

erroadd.png

nesse caso não, as funções H ja tem seu tratamento próprio, casos de erro na função H voce identifica com o retorno False e mensagem HerrorInfo()
só entra no exception se tiver erro na sintax
outra observação HerrorInfo() dentro do exception voce não vai ter a mensagem correta, o correto é exceptionInfo()

2 people like this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now