Manejo de excepciones en VB.Net: ejemplos de manejo de prueba y captura

¿Qué es una excepción en VB.Net?

An Excepción En VB.Net, se refiere a un problema que surge durante la ejecución del programa. Se produce por una circunstancia inesperada. Un buen ejemplo es cuando se realiza una operación de división y luego se divide por cero (0). Se generará una excepción.

¿Qué es el manejo de excepciones en VB.Net?

Con excepciones en VB.Net, puede transferir el control de un programa de una parte a otra. En VB.Net, las excepciones se manejan utilizando las siguientes 4 palabras clave:

Palabra clave Detail
Intente El trabajo del bloque Try es identificar el bloque de código para el cual se activará una excepción específica. Debe ir seguido de uno o varios bloques de captura.
lucha La captura de la excepción se realiza en este bloque. Es un controlador de excepciones en el que se maneja la excepción.
Finally Utilice el bloque Finalmente para ejecutar un conjunto de declaraciones, ya sea que haya ocurrido una excepción o no.
Lanzar Se lanza una excepción después de que ocurre un problema. Este es el trabajo de la palabra clave Throw.

Sintaxis de Try Catch en VB.Net

Las declaraciones Try Catch en VB.Net se definen utilizando la siguiente sintaxis:

Try
   [ try_Statement(s) ]
   [ Exit Try ]
[ Catch [ exception_name [ As type ] ] [ When expression ]
   [ catch_Statement(s) ]
   [ Exit Try ] ]
[ Catch ... ]
[ Finally
   [ finally_Statement(s) ] ]
End Try

El bloque Try/Catch debe rodear el código que puede generar una excepción. Este código se conoce como código protegido. Puede utilizar varias declaraciones de captura cuando necesite detectar varios tipos de excepciones.

Ejemplo de manejo de excepciones en VB.Net con Try Catch y Finalmente

Con las declaraciones Try/Catch, puede separar el código de su programa ordinario del sistema de manejo de errores. Demostremos cómo manejar una excepción usando las palabras clave Try, Catch y Finalmente.

Paso 1) Cree una nueva aplicación de consola.

Paso 2) Usa este código:

Module Module1
    Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)
        Dim answer As Integer
        Try
            answer = n1 \ n2
        Catch ex As DivideByZeroException
            Console.WriteLine("Exception: {0}", ex)
        Finally
            Console.WriteLine("Answer is: {0}", answer)
        End Try
    End Sub
    Sub Main()
        divisionFunction(4, 0)
        Console.ReadKey()
    End Sub

End Module

Paso 3) Haga clic en el botón Iniciar de la barra de herramientas para ejecutar el código. Debería obtener el siguiente resultado:

Manejo de excepciones

Aquí hay una captura de pantalla del código:

Manejo de excepciones

Explicación del código:

  1. Creando un módulo llamado Módulo1.
  2. Crear un subprocedimiento llamado función división con dos argumentos enteros n1 y n2. ByVal es una palabra clave de VB.Net que indica que los valores de los argumentos se pasarán por valor.
  3. Creando una variable entera llamada respuesta.
  4. Inicio del bloque Try/Catch. Necesitamos rodear el código que sospechamos que puede generar una excepción con este bloque.
  5. Realizar una operación de división entre los valores de las variables n1 y n2. El resultado de la operación de división se asigna a la variable respuesta. Este código puede generar una excepción, por ejemplo, cuando dividimos un número por cero, por lo que lo hemos rodeado con los bloques Try/Catch.
  6. Detectar la excepción denominada DivideByZeroException y asignar el mensaje de excepción generado al ex.
  7. Imprimir algún texto en la consola para notificar al usuario el tipo/nombre de la excepción que se generó.
  8. El bloque Finalmente. Esto se ejecutará tanto si se detecta una excepción como si no.
  9. Imprimir algún texto en la consola mostrando el resultado de la operación de división.
  10. Fin del bloque Try, es decir, final del código de manejo de errores.
  11. Fin del subprocedimiento de divisiónFunción.
  12. Inicio del subprocedimiento principal.
  13. Llamar/invocar el subprocedimiento divisionFunction. Aquí se pasan los valores de los dos argumentos enteros. El valor de n1=4 y n2=0. Esto significa que la operación de división será 4\0, es decir, n1\n2.
  14. Pausar la ventana de la consola esperando que el usuario tome medidas para cerrarla.
  15. Fin del subprocedimiento principal.
  16. Fin del módulo.

Excepciones definidas por el usuario en VB.Net

VB.Net le permite definir sus propias excepciones. Puede obtener clases de excepción definidas por el usuario desde la clase ApplicationException. Demostremos esto con un ejemplo:

Ejemplo de excepción definida por el usuario en VB.Net

Aquí hay un ejemplo de excepción definida por el usuario en VB.Net:

Paso 1) Cree una nueva aplicación de consola.

Paso 2) Utilice el siguiente código:

Module Module1

    Public Class HeightIsZeroException : Inherits ApplicationException
        Public Sub New(ByVal text As String)
            MyBase.New(text)
        End Sub
    End Class
    Public Class Height
        Dim height As Integer = 0
        Sub showHeight()
            If (height = 0) Then
                Throw (New HeightIsZeroException("Zero Height found"))
            Else
                Console.WriteLine("Height is: {0}", height)
            End If
        End Sub
    End Class
    Sub Main()
        Dim hght As Height = New Height()
        Try
            hght.showHeight()
        Catch ex As HeightIsZeroException
            Console.WriteLine("HeightIsZeroException: {0}", ex.Message)
        End Try
        Console.ReadKey()
    End Sub

End Module

Paso 3) Haga clic en el botón Iniciar de la barra superior para ejecutar el código. Debería obtener el siguiente resultado:

Excepción definida por el usuario

Aquí hay una captura de pantalla del código:

Excepción definida por el usuario

Explicación del código:

  1. Creando un módulo llamado Módulo1.
  2. Creando una clase de excepción llamada HeightIsZeroException. La clase hereda toda la clase ApplicationException.
  3. Creando un subprocedimiento llamado Nuevo. Se necesitará un argumento de cadena llamado texto.
  4. Llamar al constructor de la clase base y pasarle el argumento anterior.
  5. Fin del Nuevo subprocedimiento.
  6. Fin de la clase HeightIsZeroException.
  7. Creando una clase llamada Altura. Su modificador de acceso público es Público, lo que significa que será de acceso público.
  8. Creando una variable entera llamada Altura e inicializando su valor a 0.
  9. Creando un subprocedimiento llamado showHeight().
  10. Comprobando cuándo el valor de la variable Altura es 0. Hemos utilizado la condición Si…Entonces.
  11. Lanzar HeightIsZeroException si la condición anterior es verdadera. El mensaje Se encontró altura cero se mostrará cuando se produzca esta excepción.
  12. La parte Else se ejecutará cuando la condición If no sea verdadera.
  13. Mensaje a imprimir en la consola mostrando la Altura cuando no es 0.
  14. Fin de la condición If.
  15. Fin del subprocedimiento showHeight().
  16. Fin de la clase Altura.
  17. Inicio del subprocedimiento principal.
  18. Crear un objeto llamado Altura como instancia de la clase Altura.
  19. Inicio del bloque de manejo de excepciones.
  20. Invocando el subprocedimiento showHeight() definido en la clase Height. Hemos utilizado un objeto de esta clase para acceder a este método. Esta línea puede resultar en una excepción. Por lo tanto, lo hemos rodeado con un código de manejo de excepciones.
  21. Detectar la excepción HeightIsZeroException como objeto ex en caso de que ocurra.
  22. El mensaje que se imprimirá en la consola cuando se detecte HeightIsZeroException.
  23. Fin del bloque de manejo de excepciones.
  24. Pausa la ventana de la consola esperando que un usuario tome medidas para cerrarla.
  25. Fin del subprocedimiento principal.
  26. Fin del módulo.

Lanzar excepción en VB.Net

En el manejo de excepciones, puede optar por lanzar un objeto. Sin embargo, el objeto debe derivarse de System. Clase de excepción, directa o indirectamente. Por ejemplo:

Ejemplo de lanzamiento de excepción en VB.Net

A continuación se muestra un ejemplo de excepción de lanzamiento en VB.Net:

Paso 1) Cree una nueva aplicación de consola.

Paso 2) Utilice el siguiente código:

Module Module1

    Sub Main()
        Try
            Throw New ApplicationException("Throwing a custom exception")
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("The Finally Block")
        End Try
        Console.ReadKey()
    End Sub


End Module

Paso 3) Haga clic en el botón Iniciar de la barra superior para ejecutar el código. Debería aparecer lo siguiente:

Lanzar excepción

Aquí hay una captura de pantalla del código:

Lanzar excepción

Explicación del código:

  1. Creando un módulo llamado Módulo1.
  2. Inicio del subprocedimiento principal.
  3. Inicio del código de manejo de errores.
  4. Lanzar un objeto de excepción. Este código puede generar una excepción, por lo que lo hemos rodeado con un bloque Try/Catch.
  5. Detectar una excepción como objeto ex si la línea arroja una excepción.
  6. Imprimiendo el mensaje de excepción en la consola en caso de que ocurra.
  7. El bloque Finalmente se ejecuta tanto si se detecta una excepción como si no.
  8. El mensaje que se imprimirá en la consola cuando se ejecute el bloque Finalmente.
  9. Fin del código de manejo de excepciones.
  10. Pausa la consola por un momento esperando que un usuario tome medidas para cerrarla.
  11. Fin del subprocedimiento principal.
  12. Fin del módulo.

Resumen

  • Una excepción se refiere a un problema que surge durante la ejecución del programa provocado por una circunstancia inesperada.
  • Si sospecha que algún código generará una excepción, rodéelo con un bloque Try/Catch.
  • El bloque Finalmente viene después del bloque Try/Catch y se ejecuta independientemente de que se detecte o no una excepción.
  • VB.Net nos permite crear excepciones personalizadas.