Caso Captura Errores Captura el Error Pero Sale del sistema.

Caso Captura Errores Captura el Error Pero Sale del sistema.

Postby ruben Dario » Fri Oct 19, 2007 9:59 pm

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  Expand view
..
..
.
.
.

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  Expand view
...
..
..
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



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

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: ertan and 98 guests