Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

sábado, 17 de noviembre de 2012

Gestión de excepciones y errores

Cuando ejecutamos una aplicación, se pueden producir errores, por ejemplo, intentando abrir un archivo que no existe. Este tipo de error nos producen una salida abrupta de nuestra aplicación.

Podemos tratar ese tipo de errores, para que nuestra aplicación pueda por ejemplo, mostrar un mensaje de error e incluso poder seguir ejecutando el programa, como si nada hubiera ocurrido.

Estas son las ordenes que se usan para gestionar los errores:



CATCH
Captura un error en una función
DEBUG
Muestra en consola un mensaje de depuracion
ERROR
Indica si ocurrió un error, o muestra un mensaje de error
Error
La clase estatica Error, por ejemplo, nos puede indicar el número de error
FINALLY
Ejecuta un bloque de codigo en una funcion, incluso si hubo un error
TRY
Intenta ejecutar una orden, sin disparar un error.




CATCHCaptura un error en una función
DEBUGMuestra en consola un mensaje de depuracion
ERRORIndica si ocurrió un error, o muestra un mensaje de error
ErrorLa clase estatica Errorpor ejemplo, nos puede indicar el número de error
FINALLYEjecuta un bloque de codigo en una funcion, incluso si hubo un error
TRYIntenta ejecutar una orden, sin disparar un error.
Application_ErrorRutina de tratamiento de errores global



Aqui teneis un ejemplo:

' Gambas module file

Public Sub Main()
EscribeContenidoFichero("/home/uno/hola.txt")
End

' Función que Escribe el contenido de un archivo en la pantalla
Sub EscribeContenidoFichero(FileName As String)
Dim numero1 As Integer
Dim numero2 As Integer
Dim texto1 As String
Dim texto2 As String
Dim hFile As File
Dim sLig As String

'intentamos abrir el archivo, si sale mal, nos quedamos con el numero y texto del error...
Try hfile = Open FileName For Read
If Error Then
numero1 = Error.Code 'guardamos el numero de error
texto1 = Error.text 'guardamos el texto del error
Endif
While Not Eof(hFile)
Line Input #hFile, sLig
Print sLig
Wend

Finally ' siempre se ejecuta aunque se produzca el error
'intento cerrar el archivo
Try Close #hFile
 
If Error Then
numero2 = Error.Code 'guardamos el numero de error
texto2 = Error.Text 'guardamos el texto del error
Endif

Catch ' se ejecuta solo si se ha producido un error
  ' mostramos los errores producidos...
Print "No he podido mostrar el archivo: "; FileName
Print "Numero del error:"; numero1; " "; texto1
Print "Numero del error:"; numero2; " "; texto2
End

Si el archivo "/home/uno/hola.txt" existe nos mostraría su contenido, pero si no existe o tiene algun problema al abrirlo o al cerrarlo, se ejecutará las ordenes contenidas a partir de Catch.


Además al añadir Try, y el blogue de ordenes If error then ... , vamos a capturar que error se ha producido, para por ejemplo, mostrar que ha pasado e informar al usuario del error.

Descarga del codigo fuente: Codigo Fuente


Para mas información: 
http://gambaswiki.org/wiki/cat/error
http://gambaswiki.org/wiki/comp/gb/error

No hay comentarios:

Publicar un comentario en la entrada

A falta de donativos... un poco de publicidad