Cómo: Mantener el control cuando se produce un error
Actualización: noviembre 2007
Puede utilizar la construcción Instrucción Try...Catch...Finally (Visual Basic) para el control de excepciones estructurado. Permite ejecutar un bloque concreto de instrucciones si se produce una excepción especificada mientras se ejecuta el código. Cuando esto ocurre, se dice que el código provoca la excepción, que se detecta con la instrucción Catch correspondiente.
Para ejecutar un conjunto de instrucciones si su código produce una excepción
Utilice la construcción Try...Catch...Finally para agregar el código que puede producir una excepción. A continuación, especifique el código que se va a ejecutar si aparece una excepción y proporcione opcionalmente un conjunto de instrucciones que se ejecutará antes de que el control salga de la construcción Try...Catch...Finally.
En el ejemplo siguiente, se intenta calcular la fecha y la hora de 100 años después exactamente a partir del valor que se proporciona en la variable givenDate de Object.
Dim givenDate As Object Dim nextCentury As Date Try nextCentury = Microsoft.VisualBasic.DateAdd("yyyy", 100, givenDate) Catch thisExcep As System.ArgumentOutOfRangeException ' The resulting date/time is later than December 31, 9999. Catch thisExcep As System.ArgumentException ' At least one argument has an invalid value. Catch thisExcep As System.InvalidCastException ' The value in givenDate cannot be interpreted as a date/time. Catch ' An unforeseen exception has occurred. Finally ' This block is always run before leaving the Try structure. End Try
Los primeros tres bloques Catch controlan las excepciones que puede esperar de DateAdd (Función, Visual Basic). Puede tratar con cualquier excepción inesperada en el último bloque Catch.
Con independencia de lo que suceda, el bloque Finally es siempre el código que se ejecuta en último lugar antes de salir de la construcción Try...Catch...Finally. Si crea o abre los recursos como conexiones a objetos o a bases de datos en el bloque Try o Catch, puede utilizar el bloque Finally para cerrarlos y desecharlos, si es necesario.
Si no aparece la variable de excepción thisExcep en una instrucción de declaración como Dim, la instrucción Catch con la cláusula As actúa como una declaración.
Vea también
Tareas
Cómo: Transferir el control fuera de una estructura de control
Cómo: Ejecutar instrucciones en función de una o varias condiciones
Cómo: Probar varios valores de una expresión
Conceptos
Estructuras de control adicionales
Estructuras de control anidadas