[Lazarus-es] try...except

Jesus Reyes A. jesusrmx en gmail.com
Jue Jun 22 07:53:50 CEST 2017


En Wed, 21 Jun 2017 18:30:33 -0500, hfiandor via Lazarus-es  
<lazarus-es en lists.lazarus-ide.org> escribió:

>
> Estimados listeros:
>
>
> Tengo en un procedure lo siguiente:
>
>  try
>
>    if fdm.tProSerNeg1.Active=true then fdm.tProSerNeg1.Active:=false;
>
>    fdm.tProSerNeg1.FileName:=camino_BD + '\Clasificadores.db';
>
>    if fdm.tProSerNeg1.Active=false then fdm.tProSerNeg1.Active:=true;
>
>    Log('ProSerNeg1 está activa.');
>
>  except
>
>    Log('Error en activar ProSerNeg1.');
>
>    On E :Exception do
>
>    begin ShowMessage(E.Message); end;
>
>  end;
>
>
> Deseo conocer cuál es el error.
>
>
> Cuando trato de compilar, me dice que “On not found..” o algo parecido.
>
>
> Leí una página web sobre Try…except y no me dice mucho más que esto.
>
>
> Evidentemente me falta algo, que no sé qué es. O quizás he redactado mal  
> el error handling.
>
>
> Les agradecería alguna ayuda para aprender y salir del apuro.
>
>
> Saludos
>
> Ing. Héctor F. Fiandor Rosario
>
>

Hola Héctor, primero que nada recibe un cordial saludo.

Según la sintaxis declarada en esta página:  
https://www.freepascal.org/docs-html/ref/refse113.html
lo que va entre un except ... end; puede ser solamente una de tres cosas:

1. Nada (... que puede incluir, claro esta, comentarios o líneas en blanco)
2. Una lista de instrucciones que no sean del tipo On E:Exception do ...

ó

3. Una lista de instrucciones del tipo On E:Exception do ...

Pero no puedes tener una lista de instrucciones mezclando los del tipo 2 y  
3  que es justamente lo que has hecho en tu ejemplo y por eso el  
compilador se queja.

Para solucionarlo en lugar de:


   except

     Log('Error en activar ProSerNeg1.');

     On E :Exception do

     begin ShowMessage(E.Message); end;

   end;

Intenta esto:


   except

     On E :Exception do

     begin

      Log('Error en activar ProSerNeg1.');

         ShowMessage(E.Message);

     end;

   end;



saludos.



Jesus Reyes A.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20170622/0766227d/attachment.html>


Más información sobre la lista de distribución Lazarus-es