la sentencia try... catch... end es una sentencia para manejo de errores, es una forma facil de implementarlos
de ocurrir un error en el bloque de codigo contenido entre try y catch, probocara que la secuencia del programa salte hacia el catch el cual interceptara el error y si definimos una variable en catch esa variable obtendra el objeto error, con el cual podriamos hacer una manejo adecuado.
es como una version mejorada del begin secuence y end secuence
- Code: Select all Expand view
try
use tabla01 //esta tabla no existe, por tanto se crea un error, y se salta hacia catch oError
?tabla01->cambo //este codigo no es ejecutado, ya que la secuencia salto hacia catch oError
catch oError //aca se recibe un objeto error probocado en bloque try
alert( oError:descripcion ) //aca se muestra la descripcion del error, pero esta parte puede ser usado para manejar el error en cuestion.
finally
?"me muestros si hay error o no" //esta instruccion siempre se ejecutara luego del try o del catch
end
aca hay algo importante y es que oError es
uan variable que debe estar definida previamente, por ejemplo LOCAL oError
en el caso de with object ... end
es un bloque de codigo que permite manipular los metodos y var de un objeto creado
de una forma mas eficiente
normal
- Code: Select all Expand view
oMyBox := TBox():New()
oMyBox:nTop := 0
oMyBox:nLeft := 0
oMyBox:nBottom := 24
oMyBox:nRight := 80
oMyBox:cColor := "W+/B"
IF oMyBox:Mostrar()
Inkey(1)
oMyBox:Ocultar()
ENDIF
con with object
- Code: Select all Expand view
WITH OBJECT ( oMyBox := TBox:New() )
:nTop := 0
:nLeft := 0
:nBottom := 24
:nRight := 80
:cColor := "W+/B"
IF :Mostrar()
Inkey(0)
:Ocultar()
ENDIF
END
hay mas claridad en el codigo y menos codigo.
ademas creo que indicaban que el caso del with object hay alguna mejora en la velocidad de acceso a los miembros del objeto.
salu2
carlos vargas