Hola,
Lo que tienes que hacer es gestionar los errores en tus funciones y actuar en consecuencia.
Abajo te dejo un ejemplo tonto que he hecho pero creo que muestra lo que quiero decir (o eso espero)
Si ejecutas el script verás lo siguiente:
01.- Soy la función _Primera()
1A.- Soy la función _Primera_A()
1B.- Soy la función _Primera_B()
1B.- Fin de la función _Primera_B()
1A.- Fin de la función _Primera_A()
01.- Fin de la función _Primera()
02.- Soy la función _Segunda()
03.- Soy la función _Tercera()
Es decir, se ejecutan todas las funciones. Ahora en el script cambia _Primera_B(
1) por _Primera_B(
2) para simular un error en esta función y verás que no ejecuta nada más en las tres funciones _Primera y salta directamente a la segunda función.
01.- Soy la función _Primera()
1A.- Soy la función _Primera_A()
1B.- Soy la función _Primera_B()
02.- Soy la función _Segunda()
03.- Soy la función _Tercera()
Código: Seleccionar todo
_Primera()
_Segunda()
_Tercera()
Func _Primera()
ConsoleWrite("01.- Soy la función _Primera()" & @CRLF)
_Primera_A()
If @error Then Return SetError(1, 0, -1)
ConsoleWrite("01.- Fin de la función _Primera()" & @CRLF)
EndFunc ;==>_Primera
Func _Primera_A()
ConsoleWrite("1A.- Soy la función _Primera_A()" & @CRLF)
_Primera_B(1) ;llama a la función con 1 para que se ejecute todo el script
If @error Then Return SetError(1, 0, -1)
ConsoleWrite("1A.- Fin de la función _Primera_A()" & @CRLF)
EndFunc ;==>_Primera_A
Func _Primera_B($variableB)
ConsoleWrite("1B.- Soy la función _Primera_B()" & @CRLF)
If $variableB = 2 then Return SetError(1, 0, -1)
ConsoleWrite("1B.- Fin de la función _Primera_B()" & @CRLF)
EndFunc ;==>_Primera_B
Func _Segunda()
ConsoleWrite("02.- Soy la función _Segunda()" & @CRLF)
EndFunc ;==>_Segunda
Func _Tercera()
ConsoleWrite("03.- Soy la función _Tercera()" & @CRLF)
EndFunc ;==>_Tercera