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:
Aquรญ hay una captura de pantalla del cรณdigo:
Explicaciรณn de Code:
- Creando un mรณdulo llamado Mรณdulo1.
- 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.
- Creando una variable entera llamada respuesta.
- Inicio del bloque Try/Catch. Necesitamos rodear el cรณdigo que sospechamos que puede generar una excepciรณn con este bloque.
- 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.
- Detectar la excepciรณn denominada DivideByZeroException y asignar el mensaje de excepciรณn generado al ex.
- Imprimir algรบn texto en la consola para notificar al usuario el tipo/nombre de la excepciรณn que se generรณ.
- El bloque Finalmente. Esto se ejecutarรก tanto si se detecta una excepciรณn como si no.
- Imprimir algรบn texto en la consola mostrando el resultado de la operaciรณn de divisiรณn.
- Fin del bloque Try, es decir, final del cรณdigo de manejo de errores.
- Fin del subprocedimiento de divisiรณnFunciรณn.
- Inicio del subprocedimiento principal.
- 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.
- Pausar la ventana de la consola esperando que el usuario tome medidas para cerrarla.
- Fin del subprocedimiento principal.
- 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:
Aquรญ hay una captura de pantalla del cรณdigo:
Explicaciรณn de Code:
- Creando un mรณdulo llamado Mรณdulo1.
- Creando una clase de excepciรณn llamada HeightIsZeroException. La clase hereda toda la clase ApplicationException.
- Creando un subprocedimiento llamado Nuevo. Se necesitarรก un argumento de cadena llamado texto.
- Llamar al constructor de la clase base y pasarle el argumento anterior.
- Fin del Nuevo subprocedimiento.
- Fin de la clase HeightIsZeroException.
- Creando una clase llamada Altura. Su modificador de acceso pรบblico es Pรบblico, lo que significa que serรก de acceso pรบblico.
- Creando una variable entera llamada Altura e inicializando su valor a 0.
- Creando un subprocedimiento llamado showHeight().
- Comprobando cuรกndo el valor de la variable Altura es 0. Hemos utilizado la condiciรณn SiโฆEntonces.
- Lanzar HeightIsZeroException si la condiciรณn anterior es verdadera. El mensaje Se encontrรณ altura cero se mostrarรก cuando se produzca esta excepciรณn.
- La parte Else se ejecutarรก cuando la condiciรณn If no sea verdadera.
- Mensaje a imprimir en la consola mostrando la Altura cuando no es 0.
- Fin de la condiciรณn If.
- Fin del subprocedimiento showHeight().
- Fin de la clase Altura.
- Inicio del subprocedimiento principal.
- Crear un objeto llamado Altura como instancia de la clase Altura.
- Inicio del bloque de manejo de excepciones.
- 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.
- Detectar la excepciรณn HeightIsZeroException como objeto ex en caso de que ocurra.
- El mensaje que se imprimirรก en la consola cuando se detecte HeightIsZeroException.
- Fin del bloque de manejo de excepciones.
- Pausa la ventana de la consola esperando que un usuario tome medidas para cerrarla.
- Fin del subprocedimiento principal.
- 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:
Aquรญ hay una captura de pantalla del cรณdigo:
Explicaciรณn de Code:
- Creando un mรณdulo llamado Mรณdulo1.
- Inicio del subprocedimiento principal.
- Inicio del cรณdigo de manejo de errores.
- 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.
- Detectar una excepciรณn como objeto ex si la lรญnea arroja una excepciรณn.
- Imprimiendo el mensaje de excepciรณn en la consola en caso de que ocurra.
- El bloque Finalmente se ejecuta tanto si se detecta una excepciรณn como si no.
- El mensaje que se imprimirรก en la consola cuando se ejecute el bloque Finalmente.
- Fin del cรณdigo de manejo de excepciones.
- Pausa la consola por un momento esperando que un usuario tome medidas para cerrarla.
- Fin del subprocedimiento principal.
- 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.






