FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Try/except/finally
Hola,
quisiera saber si podeis ayudarme a controlar posibles fallos en mi aplicación. en tiempo diseño, constantemente me aparecen excepciones que supongo hacen que la aplicación deje cositas abiertas por ahí, y de vez en cuando, me sale un mensaje: Código:
falta de memoria utilizo codigo del tipo Código:
TRY EXCEPT Código:
TRY query1.open; edit1.text :=query1.fieldbyname ('campo').asstring ; EXCEPT showmessage ('no se pudo cargar los datos'); END todo correcto, la cuestion es que posterior a esto, salta una excepción indicando lo mismo en ingles y para mi gusto es algo que no queda nada bien y entiendo que es algo que no tengo controlado o no lo estoy haciendo bien. podria llegar a poner Código:
on exception do codigo... en el EXCEPT me faltaria poner Código:
raise espero haberme explicado y que podais ayudarme utilizo Código:
TRY |
#2
|
||||
|
||||
Hola.
En el ejemplo que citas si puedes cerrar el query antes del mensaje
Saludos
__________________
Be water my friend. |
#3
|
|||
|
|||
try/except/finally
ok,
ahora no puedo probarlo mañana comento algo al respecto seria mejor tratar el try con la excepción correcta? con lo que pongo seria suficiente para cualquier operación que se haria con el query o tendría que tratar alguna excepción más? Código:
TRY query1.open; edit1.text := query1.fieldbyname ('CAMPO').asstring ; EXCEPT On EDatabaseError do begin query1.close ; showmessage ('Error al cargar los datos'); end; Código:
on EDatabaseError do gracias |
#4
|
||||
|
||||
El "ON" es para filtrar el tipo de excepción, cuando se quiere dar una respuesta diferente para ciertos tipos. Así:
Además te permite acceder a los métodos de la excepción, tales como el identificador, el mensaje, etc. También ten en cuenta que cada bloque filtrará la excepción indicada y todas aquellas de clases derivadas que no hayan sido procesadas ya. Por eso "ON Error: Exception " obtendrá todas las excepciones que no se hayan filtrado. Y por eso es importante el orden en el que se pongan, ya que se pueden ocultar si se ponen en el orden incorrecto (por ejemplo, si pones "ON Error: Exception " la primera, entonces nunca ejecutará el resto). De todas formas, puedes anidar un "FINALLY" dentro del "EXCEPTION":
Última edición por Ñuño Martínez fecha: 12-09-2011 a las 20:33:27. |
#5
|
|||
|
|||
try/except/finally
Cita:
muchas gracias me parece muy completo el aporte un comentario;entiendo que en el segundo try(el anidado) si ocurriera alguna excepción/error al intentar Código:
edit1.text:= query1.fieldbyname('campo').asstring muchas gracias |
#6
|
||||
|
||||
Cita:
La respuesta ya te la dió Ñuño en el código que mencionás con un comentario:
Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Capturar Errores con Try, Finally, End | GerTorresM | OOP | 1 | 23-04-2011 23:16:01 |
try-try-finally-finally | roman | Varios | 33 | 20-08-2008 02:27:00 |
Try Except --finally-- | Caral | Varios | 13 | 02-10-2006 22:12:24 |
|