¿Qué es una excepción?
Una excepción se refiere a un problema que surge durante la ejecución del programa. Es provocado por una circunstancia inesperada. Un buen ejemplo es cuando está realizando una operación de división y luego divide por cero (0). Se planteará una excepción.
En este tutorial de Visual Basic, aprenderá:
- ¿Qué es una excepción?
- ¿Qué es el manejo de excepciones?
- Sintaxis de Try / Catch
- Ejemplo para manejar excepciones
- Excepciones definidas por el usuario
- Lanzar objetos
¿Qué es el manejo de excepciones?
Con excepciones, puede transferir el control de un programa de una parte a otra. En VB.NET, las excepciones se manejan usando las siguientes 4 palabras clave:
Palabra clave | Detalle |
Tratar | El trabajo del bloque Try es identificar el bloque de código para el que se activará una excepción específica. Debe ir seguido de un bloque (s) de captura. |
Captura | La captura de la excepción se realiza en este bloque. Es un controlador de excepciones en el que se maneja la excepción. |
Finalmente | Utilice el bloque Finalmente para ejecutar un conjunto de declaraciones, ya sea que se haya producido una excepción o no. |
Lanzar | Se lanza una excepción después de la ocurrencia de un problema. Este es el trabajo de la palabra clave Throw. |
Sintaxis de Try / Catch
Las declaraciones Try / Catch toman la sintaxis que se indica a continuación:
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 para manejar excepciones
Con las sentencias 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) Utilice este código:
Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd Module
Paso 3) Haga clic en el botón Inicio 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 Module1.
- Creando un subprocedimiento llamado divisionFunction 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.
- Realizando 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 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.
- Imprimiendo 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 divisionFunction.
- Inicio del subprocedimiento principal.
- Llamar / invocar el subprocedimiento divisionFunction. Los valores de los dos argumentos enteros se pasan aquí. 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 a la espera de que el usuario actúe para cerrarla.
- Fin del subprocedimiento principal.
- Fin del módulo.
Excepciones definidas por el usuario
VB.NET le permite definir sus propias excepciones. Puede obtener clases de excepción definidas por el usuario de la clase ApplicationException. Demostremos esto con un ejemplo:
Paso 1) Cree una nueva aplicación de consola.
Paso 2) Utilice el siguiente código:
Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd Module
Paso 3) Haga clic en el botón Inicio 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 Module1.
- Creando una clase de excepción llamada HeightIsZeroException. La clase hereda toda la clase ApplicationException.
- Creando un subprocedimiento llamado Nuevo. Tomará 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 la excepción HeightIsZeroException si la condición anterior es verdadera. Se mostrará el mensaje Altura cero encontrada cuando se lance esta excepción.
- La parte Else que se ejecutará cuando la condición If no sea verdadera.
- Mensaje para imprimir en la consola que muestra 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.
- Creando 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.
- Capturando la excepción HeightIsZeroException como objeto ex en caso de que ocurra.
- El mensaje para imprimir en la consola cuando se detecta la excepción HeightIsZeroException.
- Fin del bloque de manejo de excepciones.
- Pausa la ventana de la consola esperando que un usuario realice una acción para cerrarla.
- Fin del subprocedimiento principal.
- Fin del módulo.
Lanzar objetos
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:
Paso 1) Cree una nueva aplicación de consola.
Paso 2) Utilice el siguiente código:
Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module
Paso 3) Haga clic en el botón Inicio de la barra superior para ejecutar el código. Debería obtener lo siguiente:
Aquí hay una captura de pantalla del código:
Explicación del código:
- Creando un módulo llamado Module1.
- 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.
- Capturar 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 si se detecta una excepción o 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 a que un usuario tome acción 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, rodee con un bloque Try / Catch.
- El bloque Finalmente viene después del bloque Try / Catch y se ejecuta tanto si se detecta una excepción como si no.
- VB.NET nos permite crear excepciones personalizadas.