08 · Manejo de Errores
Límites locales de Result
attempt ejecuta un bloque y envuelve su resultado normal en Ok. Un ? de Result que falla sale del attempt más cercano como Err. Un Result al final permanece anidado. No captura panics; la propagación de opcionales requiere conversión explícita del error.
En esta página
attempt ejecuta un bloque y envuelve su resultado normal en Ok. Un ? de Result que falla sale del attempt más cercano como Err. Un Result al final permanece anidado. No captura panics; la propagación de opcionales requiere conversión explícita del error.
Ejemplo completo
Límites locales de Result.
11-attempt.zolo
// Feature: local Result boundaries
// Syntax: attempt { let value = fallible()?; value }
// When to use: handle a Result failure locally and continue the caller.
use std::Result
fn read_number(text: str) -> Result<int, str> {
if text == "42" { return Result.Ok(42) }
return Result.Err("bad number")
}
fn main() {
let good: Result<int, str> = attempt {
let value = read_number("42")?
value + 1
}
match good {
Result::Ok(value) => print(value),
Result::Err(error) => print(error),
}
// expected: 43
let bad: Result<int, str> = attempt {
let value = read_number("other")?
value + 1
}
match bad {
Result::Ok(value) => print(value),
Result::Err(error) => print(error),
}
// expected: bad number
print("caller continues")
// expected: caller continues
}
main()
Reglas y comportamiento
Condiciones y recuperación de errores · Documentación
Desde un checkout del repositorio:
zolo examples/features/08-error-handling/11-attempt.zolo
Consulta también