![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
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. |
|
#2
|
||||
|
||||
|
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;
![]() |
![]() |
|
|
|