Índice de la sección dedicada a .NET (en el Guille) Cómo... en .NET

Crear un controlador genérico de errores

Código para Visual Basic.NET (VB.NET)

Código para C Sharp (C#)


Publicado el 05/Oct/2003
Actualizado el 05/Oct/2003 (14/Dic/03)

 
 

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 Sub

Pero 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:

Código para Visual Basic.NET (VB.NET)

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

 

 

Código para C Sharp (C#)

/// 
/// 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


la Luna del Guille o... el Guille que está en la Luna... tanto monta...