Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   manual de excepciones de object pascal para free pascal??? (https://www.clubdelphi.com/foros/showthread.php?t=21756)

Garion 26-05-2005 20:09:18

manual de excepciones de object pascal para free pascal???
 
Hola, estoy buscando algun manual sobre las excepciones en object pascal. Se algo sobre ellas xo hay cosas que no entiendo como el uso de raise. Se que existen tb las instrucciones try - expect y try - finally y se usarlas para crear procedimientos o simplemente instrucciones que se ejecuten en caso de que se produzca una excepcion para que no salga del programa xo no se muy bien cual es el uso de la clase exception
Por ejemplo, tengo que hacer un programa en el que, en una parte de él, necesito acceder a un fichero y tengo que crear una excepcion para el caso de que no exista. Usando try - expect es facil hacer un procedimiento para que, en el caso de que no exista, simplemente lo cree. Pero la practica (es para la universidad) consiste en crear objetos que hereden de la clase exception y ademas quiero entender como se usa la instruccion raise.
Lo he intentado haciendo que en caso de error haga "raise mem.crear" donde mem.crear es

Código Delphi [-]
            constructor mem.crear
            begin
                    inherited Create ('Fichero no encontrado');
                    {esta parte es la que intento que haga xo supongo que asi no se usa esto}
                    rewrite (memoria);
                    mensaje ('Fichero no encontrado') //Muestra una ventana en gtk
           end;

y al ejecutar el programa, en lugar de EInOutError: file not exist me sale EAccessViolation: Access Violation pero no se para que me sirve esto
Alguna ayuda?
Gracias

jachguate 26-05-2005 20:24:17

Hola Garion.

Bienvenido(a) al clubdelphi. Este es un lugar de encuentro para muchos programadores de delphi de habla hispana de todo el globo. Para que la cosa funcione bien aqui, nos basamos en las reglas de la guia de estilo de los foros.

Nuestro sistema de foros también cuenta con diferentes etiquetas para publicar texto con formato y trozos de código con indentación y también con la sintaxis resaltada

He editado tu mensaje para añadir la etiqueta [ delphi ] y estoy seguro que verás la diferencia.

Sobre tu pregunta, te recomiento el libro "la cara oculta de delphi" de Ian Marteens, que dedica un capítulo al manejo de excepciones.

En tu caso particular, no entiendo que hace el rewrite(memoria) alli donde está... :confused:

Hasta luego.

;)

Garion 27-05-2005 00:37:09

Ya me parecia que no era muy ortodoxo lo que estaba haciendo. La parte del rewrite (memoria) lo que pretendia era que arreglase la excepcion reescribiendo el archivo volviendolo a crear que era lo que nos habia pedido el profesor. El problema es que con objetos acabo de empezar y no se muy bien como utilizarlo y esto de las excepciones menos.
Entonces, si no es ahi donde tengo que poner el rewrite, ¿como deberia escribir el codigo utilizando la instruccion raise para que cuando detecte la excepcion de que no existe el fichero, use una clase que herede de exception y que se encargue de que no se termine la ejecucion del programa creando el fichero de nuevo?
P.D:perdon por el fallo del codigo, la verdad es que ando con prisas ultimamente y no me pare a leer nada

jachguate 27-05-2005 00:42:29

Hola. No esperes que te haga la tarea. Lamento si estas muy apresurado, pero algo de tiempo de necesita para leer y comprender. Te he referido ya al libro de marteens, que debiera sacarte de la mayoría de las dudas, y cuyo capítulo de excepciones puede "tragarse" en unos minutos (son 22 páginas) y digerirse picando un poco de código.

Si volves luego de leer e intentar un poco, será un placer ayudarte.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 17:07:28.

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