Pular para o conteúdo

21 · Ganchos de Ciclo de Vida

Múltiplos Ganchos

Compor `on shutdown`, `on panic` e `on signal` no mesmo programa; ordem de disparo e LIFO.

Nesta página

Você pode registrar quantos blocos on quiser — de tipos iguais ou diferentes. O runtime os organiza em pilhas separadas por tipo e os dispara seguindo duas regras:

  • on shutdown — LIFO: o bloco declarado por último roda primeiro.
  • on panic — dispara antes do on shutdown quando o encerramento é causado por um pânico não capturado.

O exemplo abaixo registra três ganchos on shutdown e um on panic, depois executa o programa normalmente (sem pânico). Os três blocos de shutdown rodam em ordem inversa de declaração — 3, 2, 1:

Três ganchos on shutdown (LIFO) e um on panic — disparo na saída normal. Rode localmente para ver [hook 3], [hook 2] e [hook 1] nessa ordem, mais process.uptime() no início.

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")

Requer a CLI/host do Zolo — abra no playground ou rode localmente.

A ordem LIFO espelha a convenção de defer: quem chegou por último sai primeiro, garantindo que recursos abertos mais recentemente sejam fechados antes dos mais antigos.

Índice global

Encontre seu caminho pela Zolo

Experimente uma ideia

Comece por aqui

9 resultados

9 resultados

enespt-br