Estoy Usando FWH 2.7 y Harbour build 45 Anexo Codigo , Hize la Prueba con Xharbour No se sale Pero se Bloquea el sistema.
Caso Primer Archivo PRG .
Este Codigo lo tengo Definido en clipper y me caprtura el Error y retorna al Menu Princiapal.
Code: Select all
..
..
.
.
.
FUNCTION Accesos(Prog1,Prog2,Prog)
Local aPrim2, nChoice, aCols,oError,bManejadorerror,bUltimoManejador,cMsgErr,objErr,OBJLOCAL
local lOk := .T.
aPrim2 := { {" ", {|| MyGoTop() } ," "} }
aPrim2[1,2] := {|| &Prog1 }
BULTIMOMANEJADOR := ErrorBlock( { | oError | MIMANEJADOR(oError, .t. ) } )
BEGIN SEQUENCE
COHELP := Prog2
mtpapel:="1";mncopias:=1;MWinDos="D"
// select b_loco
** Simulo usando un Select loco que no tengo definido el sistema lo captura pero no se sale. HAsta Aqui todo Bien
Eval(aPrim2[1, 2])
// Aqui Ejecuto o hago el llamado del siguiente Procedimiento que es otro PRG Me captura el Error y se sale. Lo que noto es que no Pasa por El RECOVER definido y se sale.
RECOVER USING OBJLOCAL
? "Error No Identificado ->"
CLOSE DATABASES
SET DEVICE TO SCREEN
END SEQUENCE
ERRORBLOCK(bUltimoManejador)
// op_xod := op_mod
COHELP := "menu"
// ErrorBlock( objErr )
RETURN (.t.)
// RETURN NIL
FUNCTION MIMANEJADOR(objErr,LMANLOCAL)
IF LMANLOCAL
? "Error *** ->", ltrim( str( objErr:gencode ) ), objErr:description + ":", objErr:operation,":"+ErrorMessage(objErr)
// :End()
// SysRefresh()
BREAK objErr
ENDIF
RETURN NI
Code: Select all
...
..
..
Dentro de este PRG Hago el llamado de la Funcion Graba_Dato(Tper)
Nota : Estoy Simulado el Error para ver que pasa Inclusive le he Colocado los Instrutivos BEGIN SEQUENCE .. Etc
Static FUNCTION Graba_Dato(Tper)
Local App_ok
* if reg_nue=1;append blank;app_ok:=!neterr();else;app_ok:=rlock();endif
* if app_ok
repl_var()
dbcommit()
Bloq_Gets(Tper)
Boto_cancela(Tper)
* else
* MsgInfo( "No es posible Actualizar Registro" )
* endif
RETURN NIL