Todos los productos
Search
Centro de documentos

CloudFlow:Error handling

Última actualización: Sep 05, 2026

Los flujos de trabajo de CloudFlow pueden presentar errores esperados o inesperados durante su ejecución. El manejo de errores permite una recuperación adecuada mediante el reintento del estado con errores o la transición a un estado distinto.

Dos mecanismos trabajan en conjunto:

  • Retry: vuelve a ejecutar automáticamente el estado con errores. Úselo para errores transitorios, como limitaciones de velocidad (throttling) o problemas temporales de red.

  • Catch: transfiere el flujo de trabajo a un estado designado cuando un error persiste después de agotar todos los reintentos.

CloudFlow siempre evalúa primero Retry. Solo después de que fallan todos los intentos de reintento evalúa Catch.

Estados compatibles

Agregue los campos Retry y Catch a los siguientes tipos de estado:

Retry

El campo Retry acepta un arreglo de reglas de reintento. Cada regla especifica qué errores coincidir y cómo reintentar.

Parámetro

Tipo

Obligatorio

Descripción

Ejemplo

Errors

[]string

Sí

Tipos de error que se deben coincidir. Consulte Error types.

["MyCustomError", "FnF.ALL"]

Description

string

Sí

Etiqueta para esta regla de reintento.

Retry policy #1

MaxAttempts

int

Sí

Número máximo de intentos de reintento.

3

IntervalSeconds

int

Sí

Intervalo inicial entre reintentos, en segundos. Máximo: 86,400 (24 horas).

10

BackoffRate

float

No

Multiplicador aplicado a IntervalSeconds después de cada intento. Si se omite, el intervalo permanece constante.

2

MaxBackoffSeconds

int

No

Límite superior del intervalo de reintento calculado, en segundos. Máximo: 86,400 (24 horas).

30

Nota

Si varias reglas de reintento coinciden con el mismo tipo de error, CloudFlow usa únicamente la primera regla coincidente. Coloque los tipos de error más específicos antes de FnF.ALL para que se evalúen primero.

Catch

El campo Catch acepta un arreglo de reglas de captura. Cuando un error persiste tras agotar todos los reintentos, CloudFlow evalúa las reglas de captura en orden y realiza la transición al estado Next de la primera regla coincidente.

Parámetro

Tipo

Obligatorio

Descripción

Ejemplo

Errors

[]string

Sí

Tipos de error que se deben coincidir. Consulte Error types.

["MyCustomException1", "FnF.ALL"]

Description

string

Sí

Etiqueta para esta regla de captura.

Error catch rule #1

OutputConstructor

map[string]any

No

Construye una salida personalizada para pasarla como entrada al estado Next. Consulte State OutputConstructor.

Vea los ejemplos a continuación.

Next

string

Sí

Estado al que se transfiere el flujo de trabajo cuando se captura el error.

my-next-state

OutputConstructor

Cuando ocurre un error, el estado con errores no genera ninguna salida. Sin OutputConstructor, el siguiente estado no recibe entrada y el flujo de trabajo no puede continuar de forma útil. Use OutputConstructor para construir una salida estructurada que el estado Next pueda consumir.

Nota

Si varias reglas de captura coinciden con el mismo tipo de error, CloudFlow usa únicamente la primera regla coincidente.

Tipos de error

Errores de CloudFlow

Estos errores se originan en el propio motor de CloudFlow.

Tipo de error

Descripción

FnF.TaskTimeout

Un paso individual del flujo de trabajo excedió el tiempo de espera.

FnF.Timeout

La ejecución general del flujo de trabajo excedió el tiempo de espera.

FnF.ALL

Comodín que captura todos los errores de CloudFlow. Colóquelo como última entrada en el arreglo Retry o Catch para que las reglas más específicas se evalúen primero.

Errores de Function Compute

Estos errores ocurren cuando CloudFlow invoca Function Compute. Para conocer los tipos de error relacionados con otras integraciones de servicios, consulte la documentación del servicio correspondiente.

Tipo de error

Descripción

FC.ResourceThrottled

Funciones limitadas por alta concurrencia. Todas las funciones están restringidas por un valor total de concurrencia. CloudFlow invoca Function Compute de forma síncrona cuando ejecuta estados Task. El valor total de concurrencia es la suma del valor de concurrencia en las invocaciones de funciones y los valores de concurrencia de otros métodos de invocación. Puede solicitar modificar el valor de concurrencia de las invocaciones síncronas de Function Compute.

FC.ResourceExhausted

Funciones limitadas por recursos insuficientes. Contact us para resolverlo.

FC.InternalServerError

Error del sistema en Function Compute. Vuelva a ejecutar el flujo de trabajo.

FC.Unknown

Function Compute invocó la función, pero ocurrió un error no capturado durante la ejecución. Código de error de ejemplo: UnhandledInvocationError.

FC.{ErrorCode}

Cualquier otro error de Function Compute donde {ErrorCode} es el código de error específico. Consulte Function Compute error codes.

Errores personalizados

Tipo de error

Descripción

{CustomError}

Errores de excepción personalizados lanzados por el componente invocado, como errores de lógica de negocio en sus funciones.

Ejemplos

Todos los ejemplos usan un estado Task que invoca una función de Function Compute mediante FC:InvokeFunction. Reemplace el marcador de posición resourceArn con el ARN real de su función:

acs:fc:<region-id>:<account-id>:functions/<function-name>/<version-or-alias>

Marcador de posición

Descripción

Ejemplo

<region-id>

Región donde reside la función

cn-hangzhou

<account-id>

ID de cuenta de Alibaba Cloud

Su ID de cuenta numérico

<function-name>

Nombre de la función

myfunction

<version-or-alias>

Versión o alias de la función

LATEST

Para obtener detalles sobre cómo obtener el ARN de la función, consulte Obtain the ARN of the function.

Reintento y captura básicos

Este ejemplo reintenta MyCustomException1 hasta 3 veces con intervalos de 2 segundos. Si todos los reintentos fallan, la regla de captura construye una salida de error personalizada y realiza la transición a ErrorCatchExit.

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: an example of basic error handling
StartAt: my-error-handle-example
States:
  - Type: Task
    Name: my-error-handle-example
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST
      invocationType: Sync
      body: |
        xxx
    Retry:
      - Errors:
          - MyCustomException1
        Description: retry policy 1
        MaxAttempts: 3
        IntervalSeconds: 2
    Catch:
      - Errors:
          - MyCustomException1
        Description: catch policy 1
        OutputConstructor:
          ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

Lo que sucede durante la ejecución:

  1. El estado Task ejecuta FC:InvokeFunction.

  2. Si ocurre MyCustomException1, CloudFlow reintenta hasta 3 veces y espera 2 segundos entre intentos.

  3. Si todos los reintentos fallan, la regla de captura coincide con MyCustomException1, construye una salida con ErrorCode y ErrorMessage, y realiza la transición a ErrorCatchExit.

  4. Si no ocurre ningún error, el flujo de trabajo realiza la transición a SucceededExit.

Nota

MyCustomException1 se usa como ejemplo. Modifique el nombre del error según sus requisitos de negocio.

Reintento con retroceso exponencial

Este ejemplo reintenta MyCustomException2 o MyCustomException3 hasta 3 veces con retroceso exponencial. El intervalo inicial es de 5 segundos y se duplica después de cada intento (tasa de retroceso de 2.0).

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: an example of backoff error handling
StartAt: my-error-handle-example
States:
  - Type: Task
    Name: my-error-handle-example
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST
      body: xxx
    Retry:
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: retry policy 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
    Catch:
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: catch policy 2
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

Tiempos de reintento:

El sistema intenta los reintentos con intervalos de 5, 10, 20 y 40 segundos, según la tasa de retroceso de 2.0.

Si todos los reintentos fallan, la regla de captura transfiere el flujo de trabajo a ErrorCatchExit. Aquí no se define OutputConstructor, por lo que el siguiente estado no recibe una salida de error personalizada.

Varias directivas de reintento y captura

Este ejemplo combina tres niveles de manejo de errores con distintas estrategias de reintento:

  1. **MyCustomException1**: reintenta hasta 3 veces con intervalos fijos de 2 segundos.

  2. **MyCustomException2 y MyCustomException3**: reintenta hasta 3 veces con retroceso exponencial (inicial: 5 s, tasa de retroceso: 2.0).

  3. **FnF.ALL (captura general)**: reintenta hasta 3 veces con retroceso exponencial (inicial: 5 s, tasa de retroceso: 2.0), limitado a 30 segundos mediante MaxBackoffSeconds.

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: an example of error handling
StartAt: my-error-handle-example
States:
  - Type: Task
    Name: my-error-handle-example
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST
      body: xxx
    Retry:
      - Errors:
          - MyCustomException1
        Description: retry policy 1
        MaxAttempts: 3
        IntervalSeconds: 2
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: retry policy 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
      - Errors:
          - FnF.ALL
        Description: retry policy 3
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
        MaxBackoffSeconds: 30
    Catch:
      - Errors:
          - MyCustomException1
        Description: catch policy 1
        OutputConstructor:
          ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: catch policy 2
        Next: ErrorCatchExit
      - Errors:
          - FnF.ALL
        Description: catch policy 3
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

Funcionamiento de la coincidencia de reglas:

CloudFlow evalúa las reglas de reintento y captura en el orden en que aparecen. Para un error que no coincide con MyCustomException1, MyCustomException2 ni MyCustomException3, la regla de captura general FnF.ALL lo gestiona. El reintento de FnF.ALL usa MaxBackoffSeconds: 30 para limitar el intervalo, de modo que el sistema intenta los reintentos con intervalos de 5, 10, 20 y 30 segundos.

Una vez agotados todos los intentos de reintento, la regla de captura correspondiente transfiere el flujo de trabajo a ErrorCatchExit.