Cómo utilizar estructurado de excepciones en Visual Basic .NET o Visual Basic 2005

Resumen

En este artículo se muestra cómo utilizar estructurado de excepciones en Visual Basic .NET o Visual Basic 2005.

Requisitos

La lista siguiente describe el hardware, software, infraestructura de red y service packs recomendados que necesita:
  • Visual Basic .NET o Visual Basic 2005
En este artículo se supone que está familiarizado con los temas siguientes:
  • Visual Basic .NET o Visual Basic 2005
  • Microsoft Visual Studio .NET o Microsoft Visual Studio 2005

Control estructurado de excepciones

Visual Basic .NET o Visual Basic 2005 ofrece control de excepciones estructurado que proporciona una alternativa potente y más legible a "On Error Goto" control de errores, que está disponible en las versiones anteriores de Microsoft Visual Basic. Control estructurado de excepciones es más eficaz porque permite anidar los controladores de error dentro de otros controladores de error dentro del mismo procedimiento. Además, control estructurado de excepciones utiliza una sintaxis de bloque similar a la Si... Else... End If instrucción. Código de Visual Basic .NET y Visual Basic 2005 se hace más legible y más fácil de mantener.

Nota: Visual Basic .NET o Visual Basic 2005 conserva la sintaxis "On Error Goto" para compatibilidad con versiones anteriores. Todavía puede utilizar esta sintaxis en el código de Visual Basic .NET o Visual Basic 2005. Sin embargo, no puede combinar el control estructurado de excepciones y las instrucciones On Error dentro del mismo procedimiento. Cuando se escribe código nuevo, Microsoft recomienda que utilice el control de excepciones estructurado.

La sintaxis básica del control estructurado de errores es como sigue:
Try   'Code that may raise an error.
Catch
'Code to handle the error.
Finally
'Code to do any final clean up.
End Try

Se requieren las instrucciones Pruebe y End Try . Las instrucciones Catch y Finally no son necesarios, aunque debe incluir al menos uno de ellos en el código. También puede especificar varias instrucciones Catch para que cada bloque Catch controla un error específico.

Detectar una excepción

  1. Inicie Visual Studio .NET o Visual Studio 2005.
  2. Cree un nuevo proyecto de aplicación de consola en Visual Basic .NET o Visual Basic 2005.
  3. En el procedimiento Sub Main , agregue el código siguiente:
    Dim a As Integer = 0Dim b As Integer = 0
    Dim c As Integer = 0

    Try
    a = b \ c
    Catch exc As Exception
    Console.WriteLine("A run-time error occurred")
    Finally
    Console.ReadLine()
    End Try

  4. En el menú Depurar , haga clic en Iniciar para ejecutar la aplicación. El código intenta dividir un número por cero. Se trata de una operación no válida que produce una división por cero excepción. Afortunadamente, el bloque Catch detecta este error y la ventana de la consola muestra el siguiente mensaje de error:
    A run-time error has occurred

  5. Cierre la ventana de consola.

Capturar múltiples excepciones

En esta sección se muestra cómo utilizar varias instrucciones Catch para controlar errores diferentes.

  1. Abra el proyecto de aplicación de consola que creó en la sección anterior.
  2. En el procedimiento Sub Main , reemplace el código que copió en la sección anterior con el siguiente código:
    Dim a As Integer = 2147483647Dim b As Integer = 0
    Dim c As Integer = 0

    Try
    a += 1
    Catch exc As DivideByZeroException
    Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
    Console.WriteLine("Error: Overflow")
    Finally
    Console.ReadLine()
    End Try

    Este código incluye dos bloques Catch : uno para detectar la anterior división por error cero y otro para detectar el error de desbordamiento de nuevo.
  3. En el menú Depurar , haga clic en Iniciar para ejecutar la aplicación. La ventana de la consola muestra el siguiente mensaje de error:
    Error: Overflow

  4. Cierre la ventana de consola.
  5. Como siempre, no puede prever cada error que puede producirse, puede agregar un bloque de todas las detectar excepciones no anticipadas. Por ejemplo, agregue el código siguiente antes de la instrucción Finally para detectar los errores no anticipados y mostrar el mensaje de error correspondiente:
    Catch exc As ExceptionConsole.WriteLine("Error: " & exc.Message)

  6. En el menú archivo , haga clic en Cerrar solución.

Inicia una excepción

Control estructurado de excepciones, utiliza la instrucción Catch para detectar una excepción. Control estructurado de excepciones también proporciona una manera para producir una excepción. Por ejemplo, resulta útil producir una excepción cuando se realiza la validación de datos dentro de un procedimiento de Propiedad Set porque desea producir un error si se infringe una regla de negocio.

  1. Inicie Visual Studio .NET o Visual Studio 2005.
  2. Cree un nuevo proyecto de aplicación de consola en Visual Basic .NET o Visual Basic 2005.
  3. En el menú proyecto , haga clic en Agregar clase.
  4. En la ventana Agregar nuevo elemento , escriba clsPerson.vb en el cuadro de texto nombre y, a continuación, haga clic en Aceptar.
  5. Agregue el código siguiente dentro de la clsPerson Public Class... End Class instrucciones:
    Private mintAge As Integer
    Public Property Age() As Integer
    Get
    Age = mintAge
    End Get
    Set(ByVal Value As Integer)
    If Value >= 0 Then
    mintAge = Value
    Else
    Throw New ArgumentException ("Age cannot be negative")
    End If
    End Set
    End Property

    Este código crea una propiedad Age . Dado que una persona no puede tener una duración negativa, se produce un error si el usuario de la clase intenta establecer la edad a un número que sea menor que cero.
  6. En el procedimiento Sub Main de Module1.vb, agregue el código siguiente:
    Dim p As New clsPerson()
    Try
    p.Age = -1
    Catch exc As Exception
    Console.WriteLine(exc.Message)
    Finally
    Console.ReadLine()
    End Try

  7. En el menú Depurar , haga clic en Iniciar para ejecutar la aplicación. La ventana de la consola muestra el siguiente mensaje de error:
    Age cannot be negative

  8. Cierre la ventana de consola.

Lista de código completa

Detectar una excepción

Module Module1
Sub Main()
Dim a As Integer = 0
Dim b As Integer = 0
Dim c As Integer = 0

Try
a = b \ c
Catch exc As Exception
Console.WriteLine("A run-time error occurred")
Finally
Console.ReadLine()
End Try

End Sub

End Module

Capturar múltiples excepciones

Module Module1
Sub Main()
Dim a As Integer = 2147483647
Dim b As Integer = 0
Dim c As Integer = 0

Try
a += 1
Catch exc As DivideByZeroException
Console.WriteLine("Error: Divide by zero")
Catch exc As OverflowException
Console.WriteLine("Error: Overflow")
Catch exc As Exception
Console.WriteLine("Error: " & exc.Message)
Finally
Console.ReadLine()
End Try


End Sub

End Module

Inicia una excepción

Module Module1
Sub Main()
Dim p As New clsPerson()

Try
p.Age = -1
Catch exc As Exception
Console.WriteLine(exc.Message)
Finally
Console.ReadLine()
End Try
End Sub

End Module

Public Class clsPerson

Private mintAge As Integer

Public Property Age() As Integer
Get
Age = mintAge
End Get
Set(ByVal Value As Integer)
If Value >= 0 Then
mintAge = Value
Else
Throw New ApplicationException("Age cannot be negative")
End If
End Set
End Property

End Class

REFERENCIAS

Para obtener más información, consulte los siguientes sitios Web de Microsoft:

Los errores de la manera de VB.NET: viviendo con excepciones (un artículo de Desarrollador de Visual Basic )
http://msdn.microsoft.com/en-us/library/aa227603(v=vs.60).aspx

Cómo se puede capturar una excepción
http://msdn.microsoft.com/en-us/library/ys1b32h3(v=vs.80).aspx

Cómo se puede producir una excepción
http://msdn.microsoft.com/en-us/library/z7w9ff54(v=vs.80).aspx

Propiedades

Id. de artículo: 315965 - Última revisión: 17 ene. 2017 - Revisión: 1

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

Comentarios