Ir al contenido

Throw

Tipo: throw  ·  Paquete: Core Activities v1.0.8

Lanza un error a propósito con el mensaje que indiques. Sirve para detener la automatización cuando detectas una situación que no debería continuar — datos inválidos, una condición de negocio que no se cumple, un resultado inesperado. En vez de seguir y fallar más adelante de forma confusa, fallas ahí mismo con un mensaje claro.

Al ejecutarse, detiene el flujo con el error indicado. A partir de ahí:

  • Si está dentro del try de un Try / Catch, salta a ese catch (el error queda capturado). En la variable de error, .Message es tu mensaje y .Type es el errorType que indicaste (o PlaybookException).
  • Si no hay Try/Catch que lo contenga, la ejecución termina en estado failed y el mensaje aparece en los logs.
  • Si se lanza dentro de un playbook invocado, el error sube a quien lo invocó conservando su tipo: una excepción de negocio sigue siendo de negocio en el playbook padre.
  • Si relanza un error capturado —el mismo mensaje (error.Message) con el mismo tipo (error.Type) o sin tipo, dentro del catch o más adelante desde variables, como hacen las plantillas incluidas—, el lugar del error sigue siendo donde ocurrió el original: el Designer, el resumen de la ejecución y el monitor de casos de los flujos muestran ese archivo, paso y actividad (por ejemplo main.play › Pasos.play · paso 2), no este Throw. Un error nuevo (otro mensaje u otro tipo) se ubica en este Throw.
errorTypeSe trata como…Efecto
BusinessRuleExceptionError de negocio: los datos no permiten seguir.Retry y Process Queue no lo reintentan; Zoan Cloud lo reporta como «Error de negocio».
Vacío (PlaybookException) o cualquier otro textoError técnico.Se reintenta normalmente y se reporta como error técnico.

La comparación con BusinessRuleException distingue mayúsculas: escríbelo exactamente así (o elígelo de la lista del Designer).

ParámetroTipoPor defectoDescripción
messagestring—El mensaje del error. Texto fijo entre comillas o expresión. Ej: "Total inválido: " + total. Si evalúa a vacío (null), el mensaje es «Error lanzado desde el playbook.».
ParámetroTipoPor defectoDescripción
errorTypestring"PlaybookException"El tipo del error, para reconocerlo en el catch con errorVar.Type. En el Designer lo eliges de una lista: Error técnico (vacío), Excepción de negocio (guarda BusinessRuleException) u Otro tipo (escribirlo), por ejemplo "SelectorException". Usa la excepción de negocio para un error de negocio: no se reintenta, llega a Zoan Cloud como «Error de negocio» y, en un flujo, el caso puede seguir por la ruta de error del paso en vez de quedar como incidente. Se le quitan los espacios de los extremos.

Esta actividad no devuelve ningún valor: siempre termina en error.

Validar un dato y abortar con un mensaje útil si no es válido; el catch distingue el error de negocio de los demás:

Try / Catch errorVariable = error
├─ try:
│ If condition = num(fila["Total"]) <= 0
│ └─ then:
│ Throw message = "La factura " + str(fila["Numero"]) + " tiene un total inválido"
│ errorType = "BusinessRuleException"
│ ... registrar la factura ...
└─ catch:
If condition = error.Type == "BusinessRuleException"
├─ then:
│ Log level = warning message = "Factura rechazada: " + error.Message
└─ else:
Throw message = error.Message errorType = error.Type // técnico: que falle

Throw no falla por sí misma: su trabajo es producir el error. Si el mensaje que esperabas no aparece, revisa la expresión de message: el texto fijo va entre comillas y las variables, sin ellas.

  • Try / Catch — capturar un error lanzado (propio o de otra actividad).
  • Retry — no reintenta los errores de negocio.
  • Log — registrar un aviso sin detener la ejecución.
  • If — decidir cuándo lanzar el error.