08 · Tratamento de Erros
Recuperação de Result em expressões
recover avalia o Result uma vez e extrai Ok. Seus padrões correspondem ao conteúdo de Err e precisam cobrir esse tipo. Ramos que continuam retornam o mesmo tipo do sucesso. Retornos, propagação e limpeza continuam pertencendo ao escopo externo.
Nesta página
recover avalia o Result uma vez e extrai Ok. Seus padrões correspondem ao conteúdo de Err e precisam cobrir esse tipo. Ramos que continuam retornam o mesmo tipo do sucesso. Retornos, propagação e limpeza continuam pertencendo ao escopo externo.
Exemplo completo
Recuperação de Result em expressões.
recover_expression.zolo
// A successful Result keeps its value. Recovery handles only its error.
enum ReadError { Missing, Invalid }
fn number(result: Result<int, ReadError>) -> int {
result recover {
.Missing => 0,
.Invalid => -1,
}
}
fn preserve(result: Result<int, str>) -> Result<int, str> {
let value = result recover { error => return Result.Err(error) }
Result.Ok(value)
}
fn main() {
print(number(Result.Ok(7)))
print(number(Result.Err(ReadError.Missing)))
print(number(Result.Err(ReadError.Invalid)))
print(preserve(Result.Err("missing")).is_err())
}
Regras e comportamento
Condições e recuperação de erros · Documentação
A partir de um checkout do repositório:
zolo examples/features/recover_expression.zolo
Veja também