Esta instrucción indica el comienzo del código de gestión de errores de una función o procedimiento.
Cada zona "catch" se ejecuta cuando ha ocurrido un error entre el principio de la función y su final. El error puede ser disparado por la misma función, o por otra función que haya sido llamada durante su ejecución, siempre que la función llamada no tenga su propia zona "catch": cuanto más cercana al error es la zona "catch", más prioridad tiene.
Si un error se dispara durante la ejecución de la zona "catch", se propaga normalmente. ¡Esta zona no cubre sus propios errores!
Si existe una zona "finally" en la función, debe preceder a la zona "catch". Véase FINALLY para más detalles.
CATCH
SUB Function ( ... )
...
CATCH
...
END
En la imagen tenemos un código super simple sobre Catch.
Con Kill que es un comando para eliminar archivos o carpetas,
provocamos un error a propósito a fin de ver como funciona Catch.
Como observamos el archivo que se indica entre comillas no existe por tanto
dará un error que hará que todas las lineas después del Catch se ejecuten.
Si pusiéramos una carpeta o ruta de archivo existente el error no se producirá no ejecutándose ninguna linea de código después del Catch.
Algo muy importante de Catch, sino esta hará que nuestro programa se cuelgue haciéndole perder tiempo y trabajo al usuario que usa nuestra aplicación.
En cambio estando Catch aún sin lineas de código después de el nuestra aplicación no se colgará un detalle de importancia que no viene explicado en las informaciones sobre Catch.
Por ejemplo en el programa VisorRV1960 últimamente estoy usando este tipo de código en rutinas nuevas que no se bien como funcionarán y me cubro con Catch para no molestar y fastidiar al usuario del programa si hubiera un error (que provocará que el programa se cierre y que el usuario pierda su trabajo actual)
1- Es una linea que guarda en un archivo de texto la información del error.
2- Es un línea que lanza una ventana e informa al usuario del error.
El usuario podría reproducir el error y hacer una captura de pantalla e informar del error al programador para su posterior corrección.
Bueno espero que les sirva para sus proyectos y experiencias de iniciación en gambas. Saludos y comenten.
Allanando el camino a los iniciados en Gambas, porque programar en Gambas es un placer!!
Mostrando las entradas con la etiqueta Catch. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Catch. Mostrar todas las entradas
domingo, 17 de junio de 2018
lunes, 5 de septiembre de 2016
Como agregar número de versión de Gambas a nuestra aplicación?
Examinando el código del propio Gambas (ver) buscando aprender algo nuevo, me llamo la atención este código.
Rutina que obtiene la versión de Gambas, ubicada en la clase de inicio llamada "Project"
Private Sub InitVersion()
Dim sVer As String
Dim aVer As String[]
'Shell "gbx" & System.Version & " -V" To sVer
'FullVersion = Trim(Mid$(sVer, InStr(sVer, "-") + 1))
FullVersion = System.FullVersion
aVer = Split(FullVersion, ".")
aVer.Remove(aVer.Max)
Version = aVer.Join(".")
Exec [System.Path &/ "bin/gbx" & System.Version, "-V"] To sVer
FullVersionWithRevision = Trim(sVer)
If FullVersionWithRevision Ends ".0" Then FullVersionWithRevision = Left$(FullVersionWithRevision, -2)
Catch
Version = "?"
End
Dim sVer As String
Dim aVer As String[]
'Shell "gbx" & System.Version & " -V" To sVer
'FullVersion = Trim(Mid$(sVer, InStr(sVer, "-") + 1))
FullVersion = System.FullVersion
aVer = Split(FullVersion, ".")
aVer.Remove(aVer.Max)
Version = aVer.Join(".")
Exec [System.Path &/ "bin/gbx" & System.Version, "-V"] To sVer
FullVersionWithRevision = Trim(sVer)
If FullVersionWithRevision Ends ".0" Then FullVersionWithRevision = Left$(FullVersionWithRevision, -2)
Catch
Version = "?"
End
desglosemos un poco.....
Exec [System.Path &/ "bin/gbx" & System.Version, "-V"] To sVer
System.Path=/usr
System.Version=3
linea de exec= /usr/bin/gbx3 -V
sVer=3.9.0
FullVersionWithRevision = Trim(sVer) 'Elimina espacios en blanco del final de una cadena.
If FullVersionWithRevision Ends ".0" Then FullVersionWithRevision = Left$(FullVersionWithRevision, -2)
si la versión termina en ".0" entonces elimina esos dos caracteres el punto y el cero. Quedando en este caso en "3.9"
Aquí mi adaptación a el programa Taller2015
Public VersionGambas As String
Public Sub Form_Open()
ObtenerVersionGambas() 'ejecutamos la subrutina para que obtenga la version y la guarde en la variable VersionGambas
LabVersionGambas.Text = VersionGambas ' le asignamos a la propiedad text el string almacenado en VersionGambas
End
Public Sub ObtenerVersionGambas()
Dim sVer As String
Exec [System.Path &/ "bin/gbx" & System.Version, "-V"] To sVer
VersionGambas = Trim(sVer)
If VersionGambas Ends ".0" Then
VersionGambas = Left$(VersionGambas, -2)
Endif
Catch
VersionGambas = "?"
End
Public Sub Form_Open()
ObtenerVersionGambas() 'ejecutamos la subrutina para que obtenga la version y la guarde en la variable VersionGambas
LabVersionGambas.Text = VersionGambas ' le asignamos a la propiedad text el string almacenado en VersionGambas
End
Public Sub ObtenerVersionGambas()
Dim sVer As String
Exec [System.Path &/ "bin/gbx" & System.Version, "-V"] To sVer
VersionGambas = Trim(sVer)
If VersionGambas Ends ".0" Then
VersionGambas = Left$(VersionGambas, -2)
Endif
Catch
VersionGambas = "?"
End
Resultado
Etiquetas:
Catch,
Comentarios,
Ends,
Exec,
System
Suscribirse a:
Entradas (Atom)



