Fecha y hora actual: Jueves 17 Ene 2019 04:11
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.36 - Captura de errores, VB 2005

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.36 - Captura de errores, VB 2005

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Domingo 25 Oct 2009 08:21

Título del mensaje: Curso VB .NET - Tema 1.36 - Captura de errores, VB 2005

Responder citando

Curso de programación en .NET - Tema 1.36 - Captura de errores, Visual Studio 2005


1. Captura de errores, VB. Ejercicios pendiente.
1.1 Objetivos del tema.

Iniciarse en la gestión de los errores a nivel de programación.

1.2 Introducción.
Todo programa tiene un nivel de calidad.
La calidad vendrá marcada por distintos factores, un buen análisis, una buena depuración, etc..., y un adecuado control y captura de errores.

Un programa no debe finalizar nunca de forma brusca, siempre debe tener una salida ante cualquier contingencia, por dos motivos, por elegancia en la programación, y otro, el más importante, porque de esa forma se consigue la posibilidad, si se desea, de dejar un histórico de fallos, que después permitirá obtener datos para la solución de los mismos.

En la captura de errores, hay que tener presente que no siempre son errores de ejecución, si no que en muchas ocasiones la única forma de poder tomar la decisión adecuada en un momento determinado, es la de forzar un fallo en el programa, para su captura posterior.

En VB disponemos de dos formatos de captura de errores.
Código:
ON Error GoTo Etiqueta
Try Catch


El sistema del On Error, viene heredado de versiones lejanas del Basic de Microsoft, y ahora se denomina sistema no estructurado.
Estructurado o no, es un sistema comodísimo de utilizar, aunque está claro que llamado a su desaparición.

El segundo sistema, el uso de la instrucción Try, es el denominado estructurado.
Tiene como inconveniente la gestión de un sinfín de posibilidades de gestión de errores a las que hay que anticiparse y prever para su adecuada utilización.

Por otro lado la no escritura de captura de errores es otro sistema de gestión de los mismos, pues eso da como resultado una salida hacia arriba hasta encontrar un procedimiento en la línea de llamadas que si los gestiona.

1.3 On Error.
Como hemos comentado anteriormente es un antiguo sistema, cómodo y practico.
Tiene distintas variaciones.
Su estructura en un procedimiento o función es
Código:
Private Sub Ejemplo
  On Error Goto Errores
 
  Salida:
     Exit Sub
 
  Errores:
     Select case Err.Number
        Case Codigo_Error
           Resume
        Case Codigo_Error
           Resume Salida
        Case Codigo_Error
           Resume Next
     Case else
     Procedimiento_Salida_Error_Imprevisto
  End select
End Sub


La ejecución del procedimiento o función se realiza de manera normal, hasta que se produce una situación de error, en ese momento se desvía la ejecución a la zona de captura de errores donde se trata el mismo, pudiéndose tomar las siguientes opciones según interese:

  • Resume --> Vuelve donde se produce el error
  • Resume Next --> Vuelve a la siguiente instrucción que provocó el error
  • Resume Etiqueta --> Se desvía la ejecución a la etiqueta indicada.

Cualquiera de estas posibilidades es factible.
Se suele tener un procedimiento alternativo para la situación imprevista.

El código del procedimiento debe tener la estructura indicada en el ejemplo, de esa manera se abandona el
procedimiento de forma normal cuando no hay errores.
Código:
Salida:
   Exit Sub


El disponer de la etiqueta “Salida:”, facilita como opción el desviar la ejecución por tratamiento de error a la salida del procedimiento.
Código:
Resume Salida


El objeto Err dispone de métodos para facilitar una descripción del error y de su código cara al usuario.

1.4 Try Catch.
Es el denominado sistema estructurado, es algo engorroso, pues hay que escribir cada bloque de código con su propia estructura de tratamiento de errores lo que resulta incomodo. Obliga a prever que tipos de error se pueden producir para darles salida a los mismos. La estructura de una instrucción try es la siguiente.
Código:
Private Sub Ejemplo()
  Dim A, b, c As Integer
  Try
     ' el programa
     A=b/c
  Catch Ex As OverflowException ' tratamiento de error
     Console.WriteLine("Error overflow del tipo {0}", Ex.Message)
  Catch Ex As ArithmeticException ' tratamiento de error
     Console.WriteLine("Error aritmético del tipo {0}", Ex.Message)
  Finally ' siempre se ejecutará
     Console.WriteLine("Siempre se ejecutará")
  End Try
End Sub


Código:
Try
   ' el programa
   A=b/c
Catch Ex As OverflowException ' tratamiento de error


Alberga nuestro código a proteger.
Código:
Catch Ex As OverflowException ' tratamiento de error
   Console.WriteLine("Error overflow del tipo {0}", Ex.Message)


Es la parte de tratamiento de error previsto en el tipo definido por As OverflowException
Código:
Finally ' siempre se ejecutará
   Console.WriteLine("Siempre se ejecutará")


Todo lo que se escriba entre Finally y End Try siempre se ejecuta, pase lo que pase, excepto un aborto de ejecución del programa.
Como se puede comprobar en el ejemplo se pueden abordar diversas situaciones de error en un mismo Try.

1.5 Inhibición.
En VB se podría decir que es una inhibición real, pues no hacer nada, implica que el error se devuelve por la línea de ejecución hasta encontrar un procedimiento que lo trata o se llega al programa principal y se aborta el programa por error manifiesto.

1.6 Conclusiones.
Con el desvío de excepciones se obtienen varias ventajas, e inconvenientes.
Se reduce el volumen de código, por lo que es más sencillo de releer y seguir. También se obtiene de esa forma la posibilidad, de que cuando se crea código para terceros, se deja la forma o la interface de los mensajes de error, en manos de quien la usa, lo cual en la mayoría de los casos es una buena alternativa, ya que el código queda completamente integrado en el programa donde se incrusta la clase.

Evidentemente tiene como inconveniente, que no responsabilidad, de que eso genere una ejecución inadecuada, pero lo será por quien la usa, no por quien la escribió.



Autor del curso: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

captura datos

Marta85 C, C#, Visual C++ 1 Miércoles 22 Feb 2017 14:02 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Captura de pelicula Flash

Martín Ignacio Galván Flash 0 Domingo 05 Feb 2017 14:58 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de PHP-WordPress avanzado

wordpressadict PHP 1 Domingo 27 Nov 2016 19:59 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso fundamentos de programación

Yaser Programación en general 0 Miércoles 18 May 2016 00:28 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de Desarrollo en Inteligencia Artificial

JL Iglesias Feria Programación de juegos o videojuegos 7 Miércoles 02 Dic 2015 18:20 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,