Pular para conteúdo

Quiz 09 - Introdução

1. **Quais são os dois tipos principais de erros no Rust?**
Erros de compilação e erros de memória
Erros recuperáveis e erros irrecuperáveis
Erros de lógica e erros de digitação
Erros de usuário e erros do sistema > **Explicação**: Rust categoriza erros conforme a possibilidade do programa continuar ou não a execução.
2. **Qual macro é usada para causar um erro irrecuperável?**
`exit!`
`stop!`
`panic!`
`fail!` > **Explicação**: `panic!` encerra o programa imediatamente e limpa a memória.
3. **Qual o nome do Enum usado para erros recuperáveis?**
`Option`
`Error`
`Result`
`Try` > **Explicação**: `Result` tem as variantes `Ok` (sucesso) e `Err` (erro).
4. **Em um `Result`, o que a variante `Ok` contém?**
Uma mensagem de erro
O valor de retorno esperado em caso de sucesso
Um ponteiro nulo
O código de saída do sistema > **Explicação**: O `Ok` encapsula o dado resultante da operação bem-sucedida.
5. **O que o método `.unwrap()` faz?**
Resolve o erro automaticamente
Retorna o valor se for `Ok`, mas dá `panic!` se for `Err`
Ignora o erro e continua
Imprime o erro no console > **Explicação**: `unwrap` é um atalho perigoso se você não tiver certeza de que a operação funcionará.
6. **Qual a diferença entre `.unwrap()` e `.expect("msg")`?**
`expect` não dá panic
`unwrap` é mais lento
`expect` permite personalizar a mensagem de erro no panic
Não há diferença técnica > **Explicação**: `expect` é preferível por fornecer mais contexto em caso de falha.
7. **Para que serve o operador `?` no final de uma chamada de função?**
Para indicar uma dúvida no código
Para propagar o erro automaticamente para quem chamou a função
Para converter um número em booleano
Para ignorar o resultado da função > **Explicação**: O `?` retorna o erro imediatamente de dentro da função atual.
8. **Para usar o operador `?`, o tipo de retorno da sua função deve ser:**
`bool`
`void`
Compatível com o `Result` ou `Option` sendo propagado
Sempre uma `String` > **Explicação**: O tipo de retorno da função deve "casar" com o que o `?` tenta devolver.
9. **O que acontece quando ocorre um `panic!` (por padrão)?**
O computador reinicia
O programa inicia o "unwinding" (limpeza da stack e destruição de objetos)
O código fonte é apagado
O erro é ignorado silenciosamente > **Explicação**: O unwinding garante que os recursos sejam liberados corretamente.
10. **Por que o Rust não usa exceções (como `try/catch` de Java/C#)?**
Por que o criador não gostava de Java
Porque exceções são lentas
Para tornar o tratamento de erros explícito e visível no fluxo do código
Porque Rust não suporta funções complexas > **Explicação**: Ao usar `Result`, o desenvolvedor sabe exatamente onde um erro pode ocorrer.