Caso Captura Errores Captura el Error Pero Sale del sistema.

Post Reply
User avatar
ruben Dario
Posts: 986
Joined: Thu Sep 27, 2007 3:47 pm
Location: Colombia

Caso Captura Errores Captura el Error Pero Sale del sistema.

Post by ruben Dario »

El caso que usted me recomendo, que lo aplicara Igual a Clipper, lo implemente, Si estoy en el archivo.prg principal si genera un Error, el sisatema me lo captura pero no se sale del sistema, el problema que tengo es cuando Hago un llamado a otro archivo.PRG , el sistema captura el Error , Pero se Sale del sistema.

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

El Segundo PRG Codigo

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

 

Post Reply