Página 1 de 1

Try Catch

Enviado: 12 Jul 2012 15:01
por bencz
Olá (:

como posso fazer para o catch voltar ao ponto que originou o problema, corrigindo-o igual faz o errorsys ??
Isso eh possivel ??
Quem faz uso do try....catch como esta tratando isto nestes casos ???

Alexandre

Try Catch

Enviado: 12 Jul 2012 15:50
por Imatech
Exemplo...

Código: Selecionar todos


PROCEDURE RM_TEST_RECOVER( bBlock )
  LOCAL xResult
  LOCAL oError
  LOCAL bOldError := ErrorBlock( {|oError| Break( oError ) } )

  BEGIN SEQUENCE
      xResult := Eval( bBlock )
  RECOVER USING oError
      xResult := ErrorMessage( oError )
  END SEQUENCE

  ErrorBlock( bErrorOld )

RETURN


Try Catch

Enviado: 12 Jul 2012 16:06
por bencz
você poderia postar um exemplo do uso ?

Try Catch

Enviado: 12 Jul 2012 16:30
por sygecom
Exemplo:

Código: Selecionar todos

   TRY
      DBcreate('tabela', aVETOR, 'DBFCDX') // se der erro aqui, cai no CATCH
   CATCH 
      MsgStop("Erro ao Criar tabela")
      __Quit()
   END

Try Catch

Enviado: 12 Jul 2012 16:34
por Imatech
Olá Bencz !

O exemplo acima já é o prototipo pronto para uso...

Qquer dúvida esteja a vontade para novo post...


hbcompat.ch
/* TRY / CATCH / FINALLY / END */
#xcommand TRY => BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
#xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr->
#xcommand FINALLY => ALWAYS

Try Catch

Enviado: 12 Jul 2012 16:44
por bencz
Bom, sobre esse protótipo eu já havia visto, mas, achei interessante, pois, eu coloquei um alert no errorsys.ch, bem no começo do código para mostrar o numero do erro, mas, quando eu uso o try, ele nao mostra o numero do erro, mas ele cai no catch...
será que não tem algo errado neste protótipo ?

Try Catch

Enviado: 12 Jul 2012 17:20
por Imatech
Olá Bencz !


Nessa situação errorsys.ch não é utilizado no tratamento de erros no bloco: Begin...Recover.. Always...End (Try...Catch...Finally...end)
Então o uso de alguma mensagem ( Alert ) sera após Recover/Catch...


Alguem me corrija se estiver enganado...

Try Catch

Enviado: 12 Jul 2012 17:34
por bencz
Entao, como funciona ?