FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error al intentar acceder a propiedades de oError
Posts: 35
Joined: Mon Jan 15, 2007 10:46 AM
Error al intentar acceder a propiedades de oError
Posted: Thu Aug 30, 2007 12:11 PM
Saludos :-),
Estoy intentando capturar errores al evaluar expresiones (variable bvalexp), todo funciona ok salvo cuando intento mostrar o acceder al objeto oError para dar detalles de 茅ste. Dado que este c贸digo se ejecuta en un programa CGI que interpreta archivos .hrb y devuelve el resultado como un fichero xml simplemente me llega error 502 y eso es porque no llega la respuesta XML simplemente, el XML no llega a generarse.
Sin embargo si quito el oError:Description el programa funciona como debe, es decir, cuando la expresi贸n dada en bvalexp es incorrecta entra en el bloque de recuperaci贸n y si no no entra.

Gracias,

bManejadorerror:={ |oError| Break( oError ) }
...
bUltimoManejador:=ERRORBLOCK(bManejadorError)
BEGIN SEQUENCE
if &(Alltrim(bevalexp))
lfiltrar:=.T.
endif
RECOVER USING oError
cResult:="E"
cMsgErr:=MultiLang("Error:")+oError:Description
MensajeXML(cResult,cMsgErr,"",cContent,"")
RETURN
END SEQUENCE
ERRORBLOCK(bUltimoManejador)
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error al intentar acceder a propiedades de oError
Posted: Thu Aug 30, 2007 01:39 PM

Prueba a cambiarlo as铆:

cMsgErr:=MultiLang("Error:")+ If( ! Empty( oError:Description ), oError:Description, "" )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 35
Joined: Mon Jan 15, 2007 10:46 AM
Error al intentar acceder a propiedades de oError
Posted: Thu Aug 30, 2007 03:38 PM

Antonio gracias por contestar,

no funciona, he probado con otras propiedades como :Severity, y de otras maneras : Str(len(oError)) Valtype(oError) pero parece como si la variable que apunta al objeto no existiese.

He probado a declarar oError como variable local y como estatica pero ...igual no se me ocurren otras pruebas

Posts: 35
Joined: Mon Jan 15, 2007 10:46 AM
Error al intentar acceder a propiedades de oError
Posted: Thu Aug 30, 2007 03:39 PM

Perd贸n mi versi贸n de harbour

Harbour Alpha build 45.0 Intl. (Flex)

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error al intentar acceder a propiedades de oError
Posted: Thu Aug 30, 2007 05:11 PM

Modifica el c贸digo as铆 para comprobarlo:

cMsgErr:=MultiLang("Error:")+ oError:ClassName()

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 35
Joined: Mon Jan 15, 2007 10:46 AM
Error al intentar acceder a propiedades de oError
Posted: Thu Aug 30, 2007 05:30 PM

Probado, pero mismo resultado,
驴como comprobar si una variable esta definida?

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error al intentar acceder a propiedades de oError
Posted: Thu Aug 30, 2007 07:17 PM

Que valor te devuelve oError:ClassName() ? "nil" ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error al intentar acceder a propiedades de oError
Posted: Thu Aug 30, 2007 07:18 PM

> 驴como comprobar si una variable esta definida?

Type( "nombre_variable" ) == "U"

Ojo: el nombre de la variable entre comillas!

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 113
Joined: Wed Jan 10, 2007 08:43 PM
Re: Error al intentar acceder a propiedades de oError
Posted: Thu Aug 30, 2007 10:23 PM
damosi wrote:Saludos :-),
Estoy intentando capturar errores al evaluar expresiones (variable bvalexp), todo funciona ok salvo cuando intento mostrar o acceder al objeto oError para dar detalles de 茅ste. Dado que este c贸digo se ejecuta en un programa CGI que interpreta archivos .hrb y devuelve el resultado como un fichero xml simplemente me llega error 502 y eso es porque no llega la respuesta XML simplemente, el XML no llega a generarse.
Sin embargo si quito el oError:Description el programa funciona como debe, es decir, cuando la expresi贸n dada en bvalexp es incorrecta entra en el bloque de recuperaci贸n y si no no entra.

Gracias,

bManejadorerror:={ |oError| Break( oError ) }
...
bUltimoManejador:=ERRORBLOCK(bManejadorError)
BEGIN SEQUENCE
if &(Alltrim(bevalexp))
lfiltrar:=.T.
endif
RECOVER USING oError
cResult:="E"
cMsgErr:=MultiLang("Error:")+oError:Description
MensajeXML(cResult,cMsgErr,"",cContent,"")
RETURN
END SEQUENCE
ERRORBLOCK(bUltimoManejador)


Y si Intentas con esto?
TRY
   if &(Alltrim(bevalexp))
      lfiltrar:=.T.
   endif
CATCH oError
   cResult:="E"
   cMsgErr:=MultiLang("Error:")+oError:Description
   MensajeXML(cResult,cMsgErr,"",cContent,"")
   RETURN
END


Saludos
David Lagos S.
Coquimbo-Chile
David Lagos S.
Coquimbo-Chile
www.wificafe.cl
webmaster@wificafe.cl
Posts: 35
Joined: Mon Jan 15, 2007 10:46 AM
Error al intentar acceder a propiedades de oError
Posted: Fri Aug 31, 2007 08:00 AM

Gracias David,

no compila da error de sintaxis creo que try catch solo funciona en xharbour.

Posts: 35
Joined: Mon Jan 15, 2007 10:46 AM
Error al intentar acceder a propiedades de oError
Posted: Fri Aug 31, 2007 08:46 AM

Antonio perdona, me salte tu 煤ltimo post, :lol:
he probado lo que me dijiste y me deja aun m谩s desconcertado pues me devuleve "O" o sea que efectivamente es un objeto.

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error al intentar acceder a propiedades de oError
Posted: Fri Aug 31, 2007 09:28 AM

Entonces prueba:

cMsgErr:=MultiLang("Error:")+ oError:ClassName()

y veamos cual es la clase del objeto

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 35
Joined: Mon Jan 15, 2007 10:46 AM
Error al intentar acceder a propiedades de oError
Posted: Fri Aug 31, 2007 09:40 AM
Antonio lo he probado, pero cualquier intento de acceder a
propiedades del objeto produce el error.

He realizado alguna prueba (forzando una expresi贸n con error) quitando el manejador de errores y dejando que el int茅rprete de hrb (llamado clipxnet) lo maneje, la salida es esta:

Creacion de archivo, 20070831 11:32:21

********** FECHA: 20070831 11:32:21   Red: LWWB483 **********
Sistema: HClipxNet v0.99
Directorio: C:\Inetpub\wwwroot\
Disco: 59,939,790,848   RAM (KBytes): 125,644   DOS: Windows 2000 5.0.2195 Service Pack 4
Base:   (5) CONGRES    Fecha: 20070827    Reg: 3/40
Indice: (1) CODIGO
Error BASE/1449  Syntax error: &
Llamado por XMLFILTREPORTGEN(2088)
Llamado por CENTRO(451)
Llamado por MAIN(93)
Llamado por __HRBRUN(0)
Llamado por SGHRBRUN(1640)
Llamado por (b)SGBLOCK(2552)
Llamado por SGCGISCRIPT(1390)
Llamado por MAIN(601)


Estoy pensando que quiz谩s David Arturo Macias (autor de clipxnet) haya "tocado algo" para implementar su funci贸n de captura de errores, no lo se. por otro lado 驴es posible impedir la lectura de propiedades de un objeto?
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error al intentar acceder a propiedades de oError
Posted: Fri Aug 31, 2007 11:14 AM

> Error BASE/1449 Syntax error: &

Eso parece un error en una macro

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 35
Joined: Mon Jan 15, 2007 10:46 AM
Error al intentar acceder a propiedades de oError
Posted: Fri Aug 31, 2007 11:23 AM
Efectivamente, la l铆nea 2088 es :

if &(Alltrim(bevalexp))

donde le paso una expresi贸n a bevalexp que s茅 va a dar error, para que salte el manejador de errores.

La salida que pegue antes era la que daba clipxnet al capturar el error una vez comentadas las l铆neas:

//bUltimoManejador:=ERRORBLOCK(bManejadorError)
y
//ERRORBLOCK(bUltimoManejador)