Quiz 06 - Tratamento de Erros ⚠️
1. Qual o padrão idiomático para tratar erros em Go?
Usar blocos try/catch/finally
Verificar se o retorno do tipo `error` é diferente de `nil`
Ignorar todos os erros e torcer para o melhor
Usar somente o comando panic
2. O que é o tipo `error` em Go?
Uma palavra-chave do sistema operacional
Uma interface nativa com o método `Error() string`
Um número inteiro que indica o código do erro
Um booleano (true ou false)
3. Quando se deve usar a função `panic`?
Em qualquer erro de validação de formulário
Apenas para erros críticos e irrecuperáveis que impedem o programa de continuar
Para retornar mensagens de sucesso
Para fechar o programa voluntariamente
4. Qual a função do comando `defer`?
Deletar uma variável
Adiar a execução de uma função até o final da função atual (mesmo em caso de erro)
Aumentar a velocidade do loop for
Esconder o erro do usuário
5. Para que serve o comando `recover`?
Para recuperar arquivos deletados
Para capturar um panic em execução e evitar o encerramento do programa
Para restaurar o banco de dados
Para atualizar a versão do Go
6. Qual a diferença entre `errors.New` e `fmt.Errorf`?
Nenhuma, são sinônimos
`errors.New` é mais rápido no Linux
`fmt.Errorf` permite formatar a mensagem com variáveis (estilo Printf)
`errors.New` apaga o log automaticamente
7. Por que Go não utiliza exceções (try/catch)?
Porque os criadores esqueceram de implementar
Para manter o fluxo de controle visível, simples e evitar "saltos" mágicos no código
Porque exceções consomem muita bateria
Porque Go é uma linguagem para crianças
8. O que acontece se você declarar um erro e não verificá-lo (usar `_`)?
O Go avisa o usuário na tela
O programa fica mais rápido
Você corre o risco de ignorar falhas graves, gerando bugs difíceis de encontrar
O compilador deleta o arquivo fonte
9. Onde o comando `defer` costuma ser colocado?
Sempre no final da função
Logo após a declaração bem-sucedida do recurso (ex: após abrir um arquivo)
Apenas dentro do pacote main
Em um arquivo separado de configuração
10. Pode-se retornar um valor e um erro ao mesmo tempo?
Não, é proibido
Sim, é o padrão recomendado em Go
Somente se o valor for uma string
Apenas em funções que usam ponteiros