Ø Manipulación de Errores
Difícil es, por no
decir imposible, encontrar en programador que no tenga errores en su código.
Podemos clasificar los errores en una serie de categorías genéricas.
1.
Errores de
Escritura: Son
los de localización más inmediata, ya que se producen por un error sintáctico
al escribir nuestro código y gracias a IDE de Visual Studio .NET, podemos
detectarlo rápidamente.
While
(iContador < 10)
End
2.
Errores de
Ejecución: Estos
errores son los que provocan un fallo en la ejecución del programa y u
interrupción. El ejemplo siguiente provoco un error, ya que se intenta asignar
un valor que no corresponde ala tipo de dato de una variable.
Sub Main()
Dim dtfecha As Date
dtfecha
= ""
End Sub
3.
Errores Lógicos: Son los más
difíciles de captura, ya que el código se encuentra correctamente escrito, produce un problema por fallo de
planteamiento de código.
Bueno
específicamente, ¿Qué es un error y una Excepción?
Error: Es
un evento que se produce durante el funcionamiento de un programa.
Excepción: Específicamente
es un objeto generado por un error.
Ø Manipulación Estructurada de
Errores
En
este tipo de tratamiento, cada vez que se produce un error, se genera un objeto
de la clase Exception, conteniendo la información del error ocurrido. La
maenera de captura este tipo de objetos pasa por una estructura de control del
lenguaje, proporcionada para esta finalidad.
SINTAXIS
Try
'codigo
que puede provocar errores
[ Catch
[Excepcion [ as TipoExcepcionA]][ When Exprecion]
'respuesta
a error de tipo A
[ Catch
[Excepcion [ as TipoExcepcionN]][ When Exprecion]
'respuesta
a error de tipo N
[Exit Try]
[Finally]()
'codigo
posterior al control de errores
End Try
Es posible utilizar Catch de un modo genérico, es decir, sin establecer que tipo de
excepción se ha producido.
Ø Clases de Excepciones
Cada
vez que se produce un error, el entorno de ejecución genera una excepción con
la información del informe acontecido.
Entre
las propiedades y métodos que podemos utilizar, se encuentran las siguientes:
·
Message:
Descripción
del error.
·
Source:
Nombre del objeto o aplicación que provoco el error.
·
Stack
Trace: Ruta o traza del código en la que se produjo el
error.
·
ToString():
Devuelve una cadena con información detallada del error.
Ø Exit Try
Esta
es una sentencia, atreves de esta sentencia, obligamos al flujo del programa a
salir de la estructura de control de errores, desde cualquier punto de la misma
en que nos encontremos.
Ø
Instrucción Try...Catch...Finally
Esta
instrucción proporciona una manera de controlar algunos o todos los errores
posibles que pueden ocurrir en un bloque de código determinado mientras se
ejecuta el código.
Try
[ tryStatements ]
[ Exit Try ]
[ Catch [ exception [ As type ] ] [ When expression ]
[ catchStatements ]
[ Exit Try ] ]
[ Catch ... ]
[ Finally
[ finallyStatements ] ]
End Try
Ø Partes
Opcional. Instrucciones en las
que puede ocurrir un error. Puede ser una instrucción compuesta.
Ø Catch
Opcional. Se permite utilizar
varios bloques Catch. Si tiene lugar una excepción mientras se procesa
el bloque Try, cada instrucción Catch se examina en orden textual
para determinar si controla la excepción; el parámetro exception representa la
excepción que se ha producido.
exception
Opcional. Cualquier nombre de
variable. El valor inicial de exception es el valor del error producido. Se
utiliza con Catch para especificar la captura del error. Si se omite, la
instrucción Catch detecta cualquier excepción.
type
Opcional. Especifica el tipo de
filtro de clase. Si el valor de exception es del tipo especificado en type o de
un tipo derivado, el identificador queda enlazado al objeto de excepción.
Ø When
Opcional. Una instrucción Catch
con una cláusula When sólo detecta las excepciones cuando expression se
evalúa como True. Una cláusula When sólo se aplica después de
comprobar el tipo de la excepción y expression puede hacer referencia al
identificador que representa la excepción.
expression
Opcional. Debe ser convertible
implícitamente a Boolean. Cualquier expresión que describe un filtro
genérico. Se utiliza normalmente para filtrar por número de error. Se utiliza
con la palabra clave When para especificar las circunstancias bajo las
que se captura el error.
catchStatements
Opcional. Instrucciones para
controlar los errores que se producen en el bloque Try. Puede ser una
instrucción compuesta.
Ø Exit Try
Opcional. Palabra clave que
interrumpe la ejecución de la estructura Try...Catch...Finally. La
ejecución se reanuda con el código que sigue inmediatamente a la instrucción End
Try. Se ejecutará la instrucción Finally todavía. No se permite en
bloques Finally.
Ø Finally
Opcional. Siempre se ejecuta un
bloque Finally cuando la ejecución sale de cualquier parte de la
instrucción Try.
finallyStatements
Opcional. Instrucciones que se
ejecutan después de las demás operaciones de procesamiento de error.
Ø End Try
Finaliza la estructura Try...Catch...Finally.
Ø Comentarios
Las variables locales de un
bloque Try no se encuentran disponibles en un bloque Catch porque
se trata de bloques independientes. Si se desea utilizar una variable en más de
un bloque, se debe declarar la variable fuera de la estructura Try...Catch...Finally.
El bloque Try contiene código donde puede
producirse un error, mientras que el bloque Catch contiene el código
para controlar cualquier error que tenga lugar. Si se produce un error en el
bloque Try, el control del programa pasa a la instrucción Catch
apropiada para su procesamiento. El argumento exception es una instancia de la
clase Exception o una clase que se deriva de la clase Exception.
La instancia de la clase Exception corresponde al error que se produjo
en el bloque Try. La instancia contiene información acerca del error,
como el número de error y el mensaje.
Si una instrucción Catch no especifica un
argumento exception, detectará cualquier tipo de excepción del sistema o de la
aplicación. Esta variación debe utilizarse siempre como el último bloque Catch
en la estructura Try...Catch...Finally, después de detectar todas las
excepciones específicas anticipadas. El flujo de control nunca puede alcanzar
un bloque Catch situado detrás de Catch sin un argumento exception.
En situaciones de confianza parcial, como una
aplicación alojada en un recurso compartido de red, Try...Catch...Finally
no detectará las excepciones de seguridad que se produzcan antes de invocar al
método que contiene la llamada. El ejemplo siguiente, si se coloca en un
recurso compartido de servidor y se ejecuta desde el mismo, producirá el error:
"Sub System.Security.SecurityException: Error de solicitud". Para
obtener más información sobre excepciones de seguridad.
VB
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As _
System.EventArgs) Handles Button1.Click
Try
Process.Start("http://www.microsoft.com")
Catch ex As Exception
MsgBox("Can't load Web page" & vbCrLf
& ex.Message)
End Try
End Sub
En este tipo de situación de confianza parcial, hay
que colocar la instrucción Process.Start en un procedimiento Sub independiente. La
llamada inicial a Sub producirá un error, lo que permite que Try...Catch
lo capture antes de que se inicie el procedimiento Sub que contiene Process.Start y se produzca la excepción de
seguridad.
Ø Nota
Si una instrucción Try no contiene al
menos un bloque Catch, debe contener un bloque Finally.
|
Ø Ejemplo
En el siguiente ejemplo
simplificado se muestra la estructura de la instrucción Try...Catch...Finally.
VB
Public Sub TryExample()
Dim x As Integer = 5 ' Declare
variables.
Dim y As Integer = 0
Try ' Set up structured error handling.
x = x \ y ' Cause a "Divide by Zero" error.
Catch ex As Exception When y = 0 ' Catch the
error.
Beep()
MsgBox("You tried to divide by 0.") ' Show an explanatory message.
Finally
Beep() ' This line is
executed no matter what.
End Try
End Sub
Esto ha sido un poco
de investigación acerca de lo que es “try cath finally” es un método para que
podamos controlar
algunos o todos los errores posibles que pueden ocurrir en un bloque de código
determinado mientras se ejecuta el código.
No hay comentarios:
Publicar un comentario