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 de Code:

  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 de Code:

  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 de Code:

  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.

Resumir este post con: