Duda sobre excepciones

04/08/2004 - 12:02 por Javier Ros | Informe spam
Hola,

En el trabajo, antes de programar en C#, programabamos en Delphi, y hay
algo que me
llama mucho la atención sobre las excepciones:

Si en un formulario ponemos un boton y en el evento Click del mismo
ejecutamos un
código que lanza una excepción, sea por lo que sea, la aplicación entera se
cierra despues
de mostrar la ventana de excepción.
Esto en delphi no pasaba, en la misma situación la aplicación Delphi,
mostraba la excepción,
pero la ejecución del programa seguia, no se cerraba ni siquiera el
formulario.

He pensado que quizas el comportamiento normal en windows es el de C# pero
tambien
he programado mucho en Visual C++ (Win32) a pelo, sin MFC ni nada, partiendo
de void main(void),
y cuando habia una excepción no se cerraba la aplicacición.

Alguien puede aclararme las ideas?

Gracias.

Javier Ros Moreno

Preguntas similare

Leer las respuestas

#6 Octavio Hernandez
05/08/2004 - 14:26 | Informe spam
Javier,

En Delphi la aparición de una excepción no controlada no provoca la
terminación de la aplicación porque el compilador al generar el código de
máquina asigna al evento "global" Application.OnException la dirección de un
método interno que se "traga" la excepción, mostrando un mensaje en
pantalla. Asignándole valor a este evento el programador puede designar otro
método como gestor de las excepciones no atrapadas, por ejemplo para que no
aparezca el mensaje predeterminado, grabar en un fichero log, etc.

En .NET WinForms existe el evento equivalente, Application.ThreadException.
Sólo que su valor inicial es null, y por eso en caso de excepciones no
gestionadas el control "sale" a un nivel más externo que hace que la
aplicación termine. Pero puedes asignar un delegado a ese evento para que tu
programa se comporte "a là Delphi". Puedes ver un ejemplo en:

http://msdn.microsoft.com/library/d...ntopic.asp

Salu2,

Octavio

"Javier Ros" $PAMHEREemuasa.es> escribió en el mensaje
news:
Hola,

En el trabajo, antes de programar en C#, programabamos en Delphi, y hay
algo que me
llama mucho la atención sobre las excepciones:

Si en un formulario ponemos un boton y en el evento Click del mismo
ejecutamos un
código que lanza una excepción, sea por lo que sea, la aplicación entera


se
cierra despues
de mostrar la ventana de excepción.
Esto en delphi no pasaba, en la misma situación la aplicación Delphi,
mostraba la excepción,
pero la ejecución del programa seguia, no se cerraba ni siquiera el
formulario.

He pensado que quizas el comportamiento normal en windows es el de C#


pero
tambien
he programado mucho en Visual C++ (Win32) a pelo, sin MFC ni nada,


partiendo
de void main(void),
y cuando habia una excepción no se cerraba la aplicacición.

Alguien puede aclararme las ideas?

Gracias.

Javier Ros Moreno


Respuesta Responder a este mensaje
#7 Javier Ros
09/08/2004 - 12:26 | Informe spam
;)

Gracias Octavio.

"Octavio Hernandez" escribió en el mensaje
news:
Javier,

En Delphi la aparición de una excepción no controlada no provoca la
terminación de la aplicación porque el compilador al generar el código de
máquina asigna al evento "global" Application.OnException la dirección de


un
método interno que se "traga" la excepción, mostrando un mensaje en
pantalla. Asignándole valor a este evento el programador puede designar


otro
método como gestor de las excepciones no atrapadas, por ejemplo para que


no
aparezca el mensaje predeterminado, grabar en un fichero log, etc.

En .NET WinForms existe el evento equivalente,


Application.ThreadException.
Sólo que su valor inicial es null, y por eso en caso de excepciones no
gestionadas el control "sale" a un nivel más externo que hace que la
aplicación termine. Pero puedes asignar un delegado a ese evento para que


tu
programa se comporte "a là Delphi". Puedes ver un ejemplo en:




http://msdn.microsoft.com/library/d...ntopic.asp

Salu2,

Octavio

"Javier Ros" $PAMHEREemuasa.es> escribió en el mensaje
news:
> Hola,
>
> En el trabajo, antes de programar en C#, programabamos en Delphi, y


hay
> algo que me
> llama mucho la atención sobre las excepciones:
>
> Si en un formulario ponemos un boton y en el evento Click del mismo
> ejecutamos un
> código que lanza una excepción, sea por lo que sea, la aplicación entera
se
> cierra despues
> de mostrar la ventana de excepción.
> Esto en delphi no pasaba, en la misma situación la aplicación Delphi,
> mostraba la excepción,
> pero la ejecución del programa seguia, no se cerraba ni siquiera el
> formulario.
>
> He pensado que quizas el comportamiento normal en windows es el de C#
pero
> tambien
> he programado mucho en Visual C++ (Win32) a pelo, sin MFC ni nada,
partiendo
> de void main(void),
> y cuando habia una excepción no se cerraba la aplicacición.
>
> Alguien puede aclararme las ideas?
>
> Gracias.
>
> Javier Ros Moreno
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida