Página 1 de 1
O objeto error
Enviado: 14 Jan 2019 16:29
por Vlademiro
Amigos, estou com uma dúvida no objeto erro que é gerado quando uma exceção é lançada. Eu estou tentando pegar a linha do erro mas não descobri como fazer.
Até agora tenho o seguinte :
oErr:Description
oErr:operation
oErr:GenCode
oErr:Args
oErr:subsystem
oErr:subcode
Não teria algo como oErr:Line ?
O objeto error
Enviado: 14 Jan 2019 17:52
por JoséQuintas
Sim.
ProcName( n ) e ProcLine( n )
Sendo que pode pegar toda a pilha de procedures/functions.
Código: Selecionar todos
nCont := 2
DO WHILE ! Empty( ProcName( nCont ) )
? ProcName( nCont ), ProcLine( nCont )
nCont++
ENDDO
Uma olhada na errorsys do Harbour pode ser útil.
https://github.com/vszakats/harbour-cor ... errsys.prg
O objeto error
Enviado: 15 Jan 2019 07:56
por Vlademiro
Quintas, obrigado pelo retorno, mas desse jeito não dá certo. Deixa eu colocar mais um detalhe que eu esqueci de dizer:
Eu estou desenvolvendo um programa baseado no httpd que veio no contrib. Esse programa, ao que me consta, já vem com a sua errorsys configurada e eu não quero mecher nela. Eu queria a linha do erro a partir do objeto error. Vou fazer um rascunho abaixo :
Código: Selecionar todos
begin sequence with __BreakBlock()
Aqui minha rotina
recover using oErr
Aqui eu pegaria o erro
oErr:Description , etc.
Eu queria uma forma de pegar a linha.
Se eu botar PROCLINE aqui ele vai dar essa linha e não a linha do erro.
end sequence
Teria algum local onde eu pegasse os métodos da classe oErr ? A minha necessidade é a linha de onde o erro ocorreu. Algo tipo oErr:Line
O objeto error
Enviado: 15 Jan 2019 09:35
por Jairo Maia
Olá Vlademiro,
Vlademiro escreveu:Se eu botar PROCLINE aqui ele vai dar essa linha e não a linha do erro.
Se você não passar parâmetro retornará a linha da procedure corrente. Não sei como você está organizando sua função de erro, mas no caso de usar o ERRORSYS(), a posição 2 será a procedure que chamou a função ERRORSYS(), então se fizer:
Você terá exatamente a procedure e linha onde ocorreu o erro. A rigor, a procedure e linha que chamou a função atual, no caso o ERRORSYS().
O objeto error
Enviado: 15 Jan 2019 11:14
por Vlademiro
Esse é o problema Jairo, eu não estou usando o errorsys. Creio que para ter o número da linha o errorsys precisa entrar na jogada. Obrigado pelo retorno.