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
tratamento de erros de execução com errorBlock
Moderador: Moderadores
-
AlexCunha
- Usuário Nível 1

- Mensagens: 18
- Registrado em: 23 Mar 2005 13:40
- Localização: Braga, Portugal, UE
bem, entretanto já consegui perceber como funciona: basta que exista uma procedure ErrorSys que esta será executada no inicio do programa (mesmo sem ser chamada no main).
No errorsys temos ErrorBlock( {|e| DefError(e)} ) e assim sempre que ocora um erro será chamada a função DefError passando como parametro o objecto com informação do erro.
O que eu preciso agora, é conhecer todos os detalhes sobre este objecto afim de poder fazer um tratamento mais detalhado do erro. Exemplo: erro s com acesso às tabelas dbf, erro com impressora, etc
Alguma luz ?
ac
No errorsys temos ErrorBlock( {|e| DefError(e)} ) e assim sempre que ocora um erro será chamada a função DefError passando como parametro o objecto com informação do erro.
O que eu preciso agora, é conhecer todos os detalhes sobre este objecto afim de poder fazer um tratamento mais detalhado do erro. Exemplo: erro s com acesso às tabelas dbf, erro com impressora, etc
Alguma luz ?
ac