manejo de errores


Cada comando de ScriptFTP Devuelve una cadena de texto en el script una vez que el comando haya terminado. Esta cadena de texto no es el mensaje que normalmente se muestra en la ventana ScriptFTP, debajo de cada comando Es un valor de texto corto que el script puede manejar inetrnamente para comprobar si la ejecución de la orden se ha realizado correctamente o no. Si todo va bien devolverá el texto "OK", si algo sale mal recibirá un código de error. La evaluación de este valor de retorno y tomar las medidas adecuadas, que pueden hacer sus transferencias de archivos tolerante a fallos.

En el siguiente ejemplo, la salida de OPENHOST se almacena en una variable llamada $result. Si $result es "OK" se puede continuar, si $result es diferente de "OK" vamos a mostrar un mensaje y tratar de volver a conectar con el servidorFTP.

# Se trata de una etiqueta. Marca un punto en script.
# lo vamos a utilizar para volver a este punto si una
# intento de conexión falla.
:connect

# muestra un mensaje
PRINT("_____Connecting_____")

# Conecta al servidor . El valor de retorno de OPENHOST
# se almacena en $result
$result=OPENHOST("myserver.com","me","13579")

# comprueba si $result es diferente de "OK"
IF($result!="OK")
        PRINT("Cannot connect! Trying again.")
        # Jump to the label :connect to retry
        # the connection
        GOTO :connect
END IF

# Una vez que se alcanza este punto ScriptFTP
# se conectará con el servidor.
# Transfiere los archivos.
GETFILE("*.*")

# cierra conexión
CLOSEHOST

El ejemplo anterior intenta conectar con el servidorFTP de forma indefinida. Vamos a añadir algo de código en solo tres intentos :

# Esta variable, almacenará el hecho de intentos de conexión .
# En el inicio se establece en 0.
$attempts=0

# Se trata de una etiqueta. y marca un punto en el script.
# Lo vamos a utilizar para volver a este punto si un
# intento de conexión falla.
:conectar

# añadir 1 al contador de intentos de conexión
$attempts=$attempts+1

# muestra un mensaje de
PRINT("Connecting. Attempt number ".$attempts)

# conecta al servidor.El valor retorno de OPENHOST
# se almacena en $result
$result=OPENHOST("myserver.com","me","13579")


# comprobar si $resultado es diferente de "OK"
IF($result!="OK")
        # Si este es el intento de ejecución de la tercera parada
        IF($attempts==3)
                STOP
        ELSE
                PRINT("No se puede conectar !Volver a intentarlo.")
                # Saltar a la etiqueta :Conectar para volver a intentar
                # la conexión
                GOTO :connect
        END IF
END IF

# Una vez que se alcanza este punto ScriptFTP
# se conecta con el servidor.
# Transfiere los archivos.
GETFILE("*.*")

# cierra conexión
CLOSEHOST

El comando PUTFILE también genera un valor de retorno. Vamos a evaluar con el fin de comprobar si la carga se ha realizado con éxito :

$webserver="www.whatever.com"
$myuser="me"
$mypassword="13579"

OPENHOST($webserver,$myuser,$mypassword)

$my_result_put=PUTFILE("*.*")

# Si PUTFILE devuelve cualquier cosa diferente
# saltar OK para :failed_put
IF($my_result_put!="OK")
        GOTO :failed_put
END IF


:allright
PRINT("All right")

# Cierra conexión
CLOSEHOST()

# Esperar 60 segundos
SLEEP(60)

# Cerrar ScriptFTP
EXIT


:failed_put
PRINT("Error found putting files")

# Cerrar conexión
CLOSEHOST()

# Esperar 60 segundos
SLEEP(60)

# Cerrar ScriptFTP
EXIT

Puede encontrar mas ejemplos de manejo de errores , en la WEB. los scripts avanzados en ella, abordan estos aspectos en detalle.