tratamento de erros de execução com errorBlock

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

Moderador: Moderadores

AlexCunha
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 23 Mar 2005 13:40
Localização: Braga, Portugal, UE

tratamento de erros de execução com errorBlock

Mensagem por AlexCunha »

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
AlexCunha
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 23 Mar 2005 13:40
Localização: Braga, Portugal, UE

Mensagem por AlexCunha »

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
Responder