Saltar al contenido

Múltiples Ganchos

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.

Buscar en Zolo

9 resultados

enespt-br