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 del código:
- 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 del código:
- 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 del código:
- 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.