Try Catch

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Try Catch

Mensagem 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
Imagem
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Try Catch

Mensagem 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

M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Try Catch

Mensagem por bencz »

você poderia postar um exemplo do uso ?
Imagem
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Try Catch

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Try Catch

Mensagem 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
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Try Catch

Mensagem 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 ?
Imagem
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Try Catch

Mensagem 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...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Try Catch

Mensagem por bencz »

Entao, como funciona ?
Imagem
Responder