Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 12-09-2011
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 23
jsc Va por buen camino
try/except/finally

Cita:
Empezado por Ñuño Martínez Ver Mensaje
El "ON" es para filtrar el tipo de excepción, cuando se quiere dar una respuesta diferente para ciertos tipos. Así:
Código Delphi [-]
...
  EXCEPT
    ON Error: EDatabaseError DO
      ShowMessage ('Error en la base de datos.  ¡A saber lo que estabas buscando!');
    ON Error: EInOutError DO
      ShowMessage ('¡Error de entrada y salida!  Chungo lo tienes');
    ON Error: Exception DO
      ShowMessage ('La excepción no es de entrada y salida ni de base de datos.  Aun así, no respires tranquilo');
  END;
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":
Código Delphi [-]
TRY 
  query1.open;
  TRY
    edit1.text := query1.fieldbyname ('CAMPO').asstring ;
  FINALLY
  { Esta línea se ejecuta SIEMPRE, haya o no excepción. }
    query1.close ;
  END;
EXCEPT
  On Error: EDatabaseError DO
    ShowMessage ('Error al cargar los datos: '+Error.Message);
  ON Error: Exception DO
    ShowMessage ('Excepción: '+Error.Message);
END;
ok,
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
saltaria la excepción del primer TRY sin llegar a ejecutar el FINALLY verdad?
muchas gracias
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 15:20:51.


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