Saltar al contenido

21 · Ganchos de Ciclo de Vida

Múltiples Ganchos

Componer `on shutdown`, `on panic` y `on signal` en el mismo programa; orden de disparo y LIFO.

En esta página

Puedes registrar tantos bloques on como quieras — del mismo tipo o de tipos distintos. El runtime los organiza en pilas separadas por tipo y los dispara siguiendo dos reglas:

  • on shutdown — LIFO: el bloque declarado en último lugar se ejecuta primero.
  • on panic — se dispara antes de on shutdown cuando el cierre es causado por un pánico no capturado.

El ejemplo siguiente registra tres ganchos on shutdown y un on panic, luego ejecuta el programa normalmente (sin pánico). Los tres bloques de shutdown se ejecutan en orden inverso de declaración — 3, 2, 1:

Tres ganchos on shutdown (LIFO) y un on panic — disparo en la salida normal. Ejecuta localmente para ver [hook 3], [hook 2] y [hook 1] en ese orden, más process.uptime() al inicio.

02-multiple-hooks.zolo
Playground
// Lifecycle hooks demo — `on shutdown`, `on signal`, `on panic`.

// Companion: specs/lifecycle-hooks.md


use std::process

// Multiple shutdown blocks compose in LIFO order.

on shutdown {
  print("[hook 1] outermost cleanup")
}

on shutdown reason {
  print("[hook 2] reason was: {reason}")
}

on shutdown {
  print("[hook 3] innermost cleanup")
}

on panic e {
  print("[panic] uncaught: {e}")
}

print("uptime at start: {process.uptime()}s")
print("running main work...")

// Trigger normal-exit path; "on shutdown" should fire with reason="normal".

print("done")

Requiere la CLI o el host de Zolo; ábrelo en el playground o ejecútalo localmente.

El orden LIFO refleja la convención de defer: el último en entrar es el primero en salir, garantizando que los recursos abiertos más recientemente se cierren antes que los más antiguos.

Índice global

Encuentra tu camino por Zolo

Prueba una idea

Empieza aquí

9 resultados

9 resultados

enespt-br