Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Reintentar cuando se produce un error (https://www.clubdelphi.com/foros/showthread.php?t=9070)

senpiterno 13-04-2004 22:11:24

Reintentar cuando se produce un error
 
Hola amigos

Quisiera saber si Delphi tiene las herramientas para manejar el suceso de la siguiente situacion: ¿una vez producido un error (excepcion) y capturado en la estructura try.....except, es posible volver la ejecucion a la misma linea o linea siguiente en la que se produjo el error?, esto podria ser util cuando el error se deba a causas del entorno (las cuales pueden cambiar de un momento en otro), por lo cual el error seria recuperable, reintentando utilizar el mismo codigo en donde se genero....

De antemano se agradece cualquier ayuda.

jachguate 14-04-2004 05:37:45

Hola.

En delphi no podes volver a la línea que ha elevado la excepción, pues estas ya han sido saltadas en el proceso de busqueda de una clausula except. Debieras leer un poco sobre el funcionamiento y comportamiento de Delphi ante las excepciones. Si no estoy mal, la cara oculta de delphi tiene un capítulo o una sección destinada a este tema.

Si, bajo ciertas circunstancias queres dar a tus usuarios la opción de reintentar una operación, lo podes conseguir con un poco de ingenio... algo como lo siguiente funcionaría:

Código:

Procedure TForm1.Confirmar;

Var
  hecho : Boolean;

Begin
  hecho := False;
  repeat
    try
      table1.Post;
      hecho := True;
    except
      on e : EDatabaseError do
        Case PedirConfirmacionAlUsuario(e) of
          cuReintentar : ; // simplemente matamos la excepción para que el ciclo se repita
          cuAbortar : Abort; //Nos salimos del ciclo con otra excepción;
          cuIgnorar : hecho := True; // salimos del ciclo como si nada hubiera pasado;
      end;
    end;
  until hecho;
  OtrasOperaciones;
End;

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 02:38:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi