Pular para o conteúdo

Múltiplos Ganchos

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.

Buscar no Zolo

9 resultados

enespt-br