![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#23
|
|||||
|
|||||
|
¡Hola!
Cita:
Sólo que pensé que deseabas escribir la forma compacta al estilo de la forma anidada. ![]() Desde luego que hay mucha lógica en lo que dices, pero como mencioné antes: Cita:
Cita:
En concreto, creo que siempre estaré inclinado a usar la forma anidada, como lo hizo Borland en esta parte de la unidad AxCtrls.pas de Delphi 7:
Aunque probablemente utilice la forma compacta en algunas ocasiones (por confiar en que la primera destrucción no elevará una excepción), como confió Borland en esta parte de la unidad Buttons.pas:
Pero además, si para algunas situaciones se vale asumir que un destructor no elevará excepción alguna, entonces el mismo criterio podría ser aplicado a un constructor, como lo hizo Borland en esta parte de ComCtrls.pas:
En conclusión, hay tres formas de hacerlo: 1. Anidada con un Try-Finally por instanciación. 2. Compacta con asignación de Nil antes del Try e instanciaciones dentro del Try. 3. Compacta con las instanciaciones antes del Try. ¿Cuál es la más segura? La 1. ¿Cuál es la más correcta? Depende de cada caso y del criterio aplicado. Cita:
Cita:
No sé si tu inquietud va por el lado de que la elevación de una excepción en ese punto debería causar una llamada directa al destructor heredado, pero es más adecuado que llame al destructor de la propia clase usada para la construcción, ya que así se asegura la liberación de cualquier recurso que el constructor haya alcanzado a asignar. Recordemos que al crear una instancia ésta se inicializa en blanco (ceros) antes de ejecutarse el constructor, así que no hay problema de que el destructor intente algunas liberaciones al estilo "FX.Free" con campos que nunca alcanzaron a tomar un recurso asignado. Muy interesantes planteamientos, Román. Saludos. Al. ![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Try Except --finally-- | Caral | Varios | 13 | 02-10-2006 22:12:24 |
|