tratamento de erros de execução com errorBlock
Enviado: 07 Abr 2005 11:07
Olá
Estou a converter uma aplicação de clipper 5.2 para xharbour.
Existe um errorsys.prg com algo como:
PROCEDURE ErrorSys()
alert ("errorSys") // teste para ver se passsa aqui
ErrorBlock( {|e| DefError(e)} )
RETURN
*============================================================================*
STATIC FUNCTION DefError(e)
LOCAL cMessage
alert ("DefError") // teste para ver se passsa aqui
DO CASE
CASE ( e:genCode == EG_ZERODIV )
RETURN( 0 )
CASE ( e:genCode == EG_OPEN .and. e:osCode == 32 .and. e:canDefault )
NetErr(.T.)
RETURN (.F.)
CASE ( e:genCode == EG_APPENDLOCK .and. e:canDefault )
NetErr(.T.)
RETURN (.F.)
ENDCASE
(... vários cases ...)
RETURN(.F.)
Acontece que nada sei sobre este mecanismo de catch do erro. Em parte parece que está funcionando, com excepção das alterações que introduzi, por exemplo os alerts que coloquei não acionam.
Preciso de algo onde consiga aprender profusamente sobre o mecanismo de conytolo de erros na execução do xharbour.
Alguma sugestão ??
ac
Estou a converter uma aplicação de clipper 5.2 para xharbour.
Existe um errorsys.prg com algo como:
PROCEDURE ErrorSys()
alert ("errorSys") // teste para ver se passsa aqui
ErrorBlock( {|e| DefError(e)} )
RETURN
*============================================================================*
STATIC FUNCTION DefError(e)
LOCAL cMessage
alert ("DefError") // teste para ver se passsa aqui
DO CASE
CASE ( e:genCode == EG_ZERODIV )
RETURN( 0 )
CASE ( e:genCode == EG_OPEN .and. e:osCode == 32 .and. e:canDefault )
NetErr(.T.)
RETURN (.F.)
CASE ( e:genCode == EG_APPENDLOCK .and. e:canDefault )
NetErr(.T.)
RETURN (.F.)
ENDCASE
(... vários cases ...)
RETURN(.F.)
Acontece que nada sei sobre este mecanismo de catch do erro. Em parte parece que está funcionando, com excepção das alterações que introduzi, por exemplo os alerts que coloquei não acionam.
Preciso de algo onde consiga aprender profusamente sobre o mecanismo de conytolo de erros na execução do xharbour.
Alguma sugestão ??
ac