Trilhas
/
Go
Go
/
Exercícios
/
Tratamento de erros
Tratamento de erros

Tratamento de erros

Médio

Instruções

Implemente vários tipos de tratamento de erros e de gerenciamento de recursos.

Um ponto importante da programação é saber como tratar erros e fechar recursos mesmo quando ocorrem erros.

Este exercício pede que você trate vários erros. Como o tratamento de erros é bastante específico de cada linguagem de programação, você vai precisar consultar os testes da sua trilha para ver exatamente o que é necessário.

Implementação

Se você está começando com erros ou panics do Go, recomendamos ler primeiro a documentação sobre esses tópicos para entender o contexto.

Neste exercício, você vai precisar definir uma função Use(opener ResourceOpener, input string) error que abre um recurso, chama Frob(input) no recurso resultante e depois fecha esse recurso (em todos os casos). Sua função deve tratar erros e panics corretamente.

ResourceOpener opener será uma função que você pode invocar diretamente, opener(), numa tentativa de "abrir" o recurso. Ela retorna um Resource e um valor de erro da forma idiomática do Go:

Consulte o arquivo common.go para ver as definições de Resource, ResourceOpener, FrobError e TransientError. Você vai definir sua solução no mesmo pacote de common.go e error_handling_test.go: "erratum". Isso vai deixar esses tipos disponíveis para uso na sua solução.

Vai haver alguns pontos na sua função Use em que erros podem acontecer:

  • Ao invocar a função ResourceOpener passada para Use como primeiro parâmetro, ela pode falhar com um erro do tipo TransientError; nesse caso, continue tentando abrir o recurso. Se for algum outro tipo de erro, retorne-o da sua função Use.

  • Ao chamar a função Frob no Resource retornado pela função ResourceOpener, ela pode entrar em panic com um FrobError (ou outro tipo de erro). Se de fato for um FrobError, você vai ter que chamar a função Defrob do Resource usando a variável .defrobTag do FrobError do panic como entrada para a função Defrob. De qualquer forma, Use deve retornar o erro.

  • Observação também: se o Resource foi aberto com sucesso, certifique-se de chamar sua função Close exatamente uma vez, aconteça o que acontecer (mesmo que tenham ocorrido erros).

Testar tipos específicos de erro pode ser feito com asserções de tipo. Você também pode precisar dar uma olhada em valores de retorno nomeados como uma forma útil de retornar informações de erro a partir da recuperação de um panic.

Editar via GitHub O link abre em uma nova janela ou aba
Go Exercism

Tudo pronto para começar Tratamento de erros?

Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.