Page 1 of 1

Capturar Error Para Evitar que se caiga el sistema

Posted: Wed Oct 17, 2007 1:06 pm
by ruben Dario
Segun el siguiente ejemplo que tome del Forum para capturar el Error.
LOCAL oError

TRY //Esta es la linea 895
//operacion que puede fallar
CATCH oError // linea 998
//mensaje de error
Alert("Error: " + oError:description )
FINALLY
//mensaje indicando que todo esta bien
Alert("La operacion se realizo corrctamente")
END //linea 901

Pregunta , este EJemplo Funciona con Harbour estoy trabajando con FWH 2.7 y Harbour build 45

Me genera este error
Compilado y Enlazado de: [C:\proy_harb\plastwin.Exe]
Ejecución No. 1
Ejecutada a las: 08:00:07
============================================================
Harbour Compiler Alpha build 45.0 (Flex)
Copyright 1999-2005, http://www.harbour-project.org/
Compiling 'C:\proy_harb\PRG\pxp0001.prg'...
C:\proy_harb\PRG\pxp0001.prg(885) Error E0030 Syntax error: "parse error at '<eol>'"
C:\proy_harb\PRG\pxp0001.prg(895) Error E0030 Syntax error: "parse error at 'OERROR'"
C:\proy_harb\PRG\pxp0001.prg(898) Error E0030 Syntax error: "parse error at '<eol>'"
C:\proy_harb\PRG\pxp0001.prg(901) Error E0030 Syntax error: "parse error at '<eol>'"
4 errors
No code generated
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
** error 1 ** deleting C:\proy_harb\OBJ\pxp0001.hrb
Ha habido ERRORES al intentar Generar la Aplicacion
============================================================
VERCE v4.3 -> Ver Resultados de Compilación y Enlazado v4.3
Juan Carlos Salinas Ojeda
jcso@hotmail.com, jcso@esm.com.mx
Minatitlán, Veracruz. MEXICO
Y Solo Veracruz es bello !!!
FiveWin for Harbour!!

Posted: Wed Oct 17, 2007 1:28 pm
by horacio
Rubén: Try - catch es una sentencia de xHarbour no de Harbour. Tenés que usar el control de errores de clipper. Saludos

Posted: Wed Oct 17, 2007 4:56 pm
by Antonio Linares
En Harbour puedes usar TRY ... CATCH incluyendo estos defines al comienzo del PRG:

Code: Select all

   #xcommand TRY              => bError := errorBlock( {|oErr| break( oErr ) } ) ;;
                                 BEGIN SEQUENCE
   #xcommand CATCH [<!oErr!>] => errorBlock( bError ) ;;
                                 RECOVER [USING <oErr>] <-oErr-> ;;
                                 errorBlock( bError )
Tienes que delarar una variable bError

Posted: Wed Oct 17, 2007 8:14 pm
by ruben Dario
Antonio Linares wrote:En Harbour puedes usar TRY ... CATCH incluyendo estos defines al comienzo del PRG:

Code: Select all

   #xcommand TRY              => bError := errorBlock( {|oErr| break( oErr ) } ) ;;
                                 BEGIN SEQUENCE
   #xcommand CATCH [<!oErr!>] => errorBlock( bError ) ;;
                                 RECOVER [USING <oErr>] <-oErr-> ;;
                                 errorBlock( bError )
Tienes que delarar una variable bError
Gracias Antonio por aclarar la Duda.
Defini lo que Usted me dijo pero Ahora genera el Error de los
FINALLY y el END Como se definen estos parametros.

***

Lo Implemente como se Hace lo APlique en clipper y me Funciono


[/code]
BULTIMOMANEJADOR := ErrorBlock( { | oError | MIMANEJADOR(oError, .t. ) } )

BEGIN SEQUENCE
COHELP := Prog2
mtpapel:="1";mncopias:=1;MWinDos="D"
select b_loco
Eval(aPrim2[1, 2])
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.)


FUNCTION MIMANEJADOR(objErr,LMANLOCAL)
IF LMANLOCAL
? "Error *** ->", ltrim( str( objErr:gencode ) ), objErr:description + ":", objErr:operation,":"+ErrorMessage(objErr)
BREAK objErr
ENDIF
RETURN NIL

Posted: Wed Oct 17, 2007 9:57 pm
by Antonio Linares
Aqui tienes un ejemplo usado en el código del ADORDD:

Code: Select all

   TRY
      oConnection:Execute( "CREATE TABLE [" + cTableName + "] (" + aWAData[ WA_SQLSTRUCT ] + ")" )
   CATCH
      oError := ErrorNew()
      oError:GenCode     := EG_CREATE
      oError:SubCode     := 1004
      oError:Description := HB_LANGERRMSG( EG_CREATE ) + " (" + ;
                            HB_LANGERRMSG( EG_UNSUPPORTED ) + ")"
      oError:FileName    := aOpenInfo[ UR_OI_NAME ]
      oError:CanDefault  := .T.
      UR_SUPER_ERROR( nWA, oError )
   END

Posted: Wed Oct 17, 2007 10:36 pm
by ruben Dario
Antonio Linares wrote:Aqui tienes un ejemplo usado en el código del ADORDD:

Code: Select all

   TRY
      oConnection:Execute( "CREATE TABLE [" + cTableName + "] (" + aWAData[ WA_SQLSTRUCT ] + ")" )
   CATCH
      oError := ErrorNew()
      oError:GenCode     := EG_CREATE
      oError:SubCode     := 1004
      oError:Description := HB_LANGERRMSG( EG_CREATE ) + " (" + ;
                            HB_LANGERRMSG( EG_UNSUPPORTED ) + ")"
      oError:FileName    := aOpenInfo[ UR_OI_NAME ]
      oError:CanDefault  := .T.
      UR_SUPER_ERROR( nWA, oError )
   END


Gracias Antonio