Buscador

Captura de excepciones de diferente tipo en el mismo controlador de errores

Cuando en el código de un controlador de errores puedan producirse errores de distintos tipos de excepción, debemos situar tantas sentencias Catch como excepciones queramos controlar. En el Código fuente 355, hasta el momento, hemos controlado los errores por conversión de tipos. Ahora vamos a añadir varias líneas más, que obtienen un valor, y lo asignan a un índice de un array. 
Dado que el índice a manipular lo pedimos al usuario, y es posible que dicho elemento no exista en el array, añadiremos un nuevo manipulador para este tipo de excepción, mediante la sentencia Catch correspondiente.

Public Sub Main()
Dim sValor As String
Dim iNumero As Integer
Dim sLetras() As String = {"a", "b", "c", "d"}
Try
' comienza el control de errores
Console.WriteLine("Introducir un número")
sValor = Console.ReadLine()
' si no hemos introducido un número...
iNumero = sValor ' ...aquí se producirá un error...
' ...y no llegaremos a esta parte del código
iNumero = iNumero + 1000
' introducir una letra y asignarla a una
' posición del array
Dim sNuevaLetra As String
Dim iPosicion As Integer
Console.WriteLine("Introducir una letra")
sNuevaLetra = Console.ReadLine()
Console.WriteLine("Introducir posición del array para la letra")
iPosicion = Console.ReadLine()
' si al asignar la letra al array no existe
' el índice, se producirá un error
sLetras(iPosicion) = sNuevaLetra
Catch oExcep As System.InvalidCastException
' excepción producida por un error al intentar
' realizar una conversión de tipos
Console.WriteLine(oExcep.ToString())
Catch oExcep As System.IndexOutOfRangeException
' excepción producida por un error
' al intentar usar un índice inexistente
' de array, o índice fuera de rango
Console.WriteLine(oExcep.ToString())
Finally
' si se produce un error, después de Catch se ejecuta este bloque;
' si no se produce error, después de Try también se ejecuta
Console.WriteLine("El controlador de errores ha finalizado")
End Try
Console.ReadLine()
End Sub
Código fuente 355

No hay comentarios:

Publicar un comentario