08 · Tratamento de Erros
Corpos de funções falíveis
Uma função que retorna T fails E expõe Result<T, E> ao chamador. Retorne os valores de sucesso diretamente; fail erro sai com Err. O operador ? propaga a falha até a fronteira Result mais próxima, incluindo um bloco attempt local.
Nesta página
Uma função que retorna T fails E expõe Result<T, E> ao chamador. Retorne os valores de sucesso diretamente; fail erro sai com Err. O operador ? propaga a falha até a fronteira Result mais próxima, incluindo um bloco attempt local.
Exemplo completo
Corpos de funções falíveis.
fallible_invoice.zolo
// An invoice rejects missing stock and exposes Result<int, str> to its caller.
fn subtotal(quantity: int, unit_price: int) -> int fails str {
if quantity <= 0 { fail "quantity must be positive" }
if unit_price < 0 { fail "price cannot be negative" }
quantity * unit_price
}
fn invoice(quantity: int, unit_price: int) -> int fails str {
let total = subtotal(quantity, unit_price)?
total + 12
}
match invoice(3, 25) {
.Ok(total) => print("Invoice: {total}"),
.Err(message) => print("Cannot create invoice: {message}"),
}
Referência
zolo run examples/features/fallible_invoice.zolo --no-cache
Veja também