Publicado el 05/Oct/2003 |
Introducción:
Una de las ventajas de las aplicaciones de .NET es que siempre existe una forma común de iniciar las aplicaciones, incluso las que usan interfaces gráficas (aplicaciones de Windows).
En Visual Basic .NET esa "peculiaridad" se oculta al programador, pero eso no es un impedimento para que podamos usarlo.
Me refiero al procedimiento Main.
Una de las ventajas de las aplicaciones de .NET es que siempre existe una forma común de iniciar las aplicaciones, incluso las que usan interfaces gráficas (aplicaciones de Windows).
En Visual Basic .NET esa "peculiaridad" se oculta al programador, pero eso no es un impedimento para que podamos usarlo.
Me refiero al procedimiento Main.Todas las aplicaciones (ejecutables) de .NET siempre usan un procedimiento estático (o compartido) llamado Main.
Ese procedimiento, salvo en las aplicaciones de consola, se oculta a los programadores de Visual Basic .NET, sin embargo en las aplicaciones de C# siempre se incluye. Pero el que se "oculte" no quiere decir que no se utilice. Y si ese es nuestro propósito, podemos codificarlo y se utilizará sin problemas.El código incluido en ese procedimiento Main para las aplicaciones gráficas (de Windows Forms) es algo parecido a esto:
Shared Sub Main() Application.Run(New Form1) End SubPero como ya te comento, ese código no se muestra (o no se incluye) cuando creamos un nuevo proyecto de aplicación de Windows para Visual Basic .NET, sin embargo, si creamos una aplicación de Windows en C#, se incluye un código como el mostrado, aunque al estilo de C#, sería algo así:
////// Punto de entrada principal de la aplicación. /// [STAThread] static void Main() { Application.Run(new Form1()); }
En ese procedimiento lo que se hace es crear una nueva instancia del formulario que se usará como inicio, y se crea mediante una llamada al método Run del objeto Application.
El "truco" para poder crear un controlador de errores genérico para la aplicación es incluir un Try/Catch en ese procedimiento, de forma que si se produce algún error que no hayamos controlado, se ejecute el código que hemos escrito en ese bloque Catch.
El código para VB y C# quedaría de la siguiente forma:Public Class Form1 Inherits System.Windows.Forms.Form ' <STAThread()> _ Shared Sub Main() Try Application.Run(New Form1) Catch ex As Exception MessageBox.Show("ERROR no controlado: " & ex.Message) End Try End Sub ' #Region " Código generado por el Diseñador de Windows Forms " Public Sub New() MyBase.New() 'El Diseñador de Windows Forms requiere esta llamada. InitializeComponent() 'Agregar cualquier inicialización después de la llamada a InitializeComponent() End Sub ' '... ' #End Region ' End Class
////// Punto de entrada principal de la aplicación. /// [STAThread] static void Main() { try { Application.Run(new Form1()); } catch(Exception ex) { MessageBox.Show("ERROR no controlado: " + ex.Message); } }
El que se use este tipo de controlador "genérico" no quiere decir que no debamos usar controladores específicos dentro de nuestro código. Pero al menos, ese "chequeo" genérico nos permitirá que nuestra aplicación no acabe de forma "no controlada".
Espero que esto "pequeño" código te sea de utilidad.
Nos vemos.
Guillermo