Aula 38
Como Testar os Erros Que Podem Acontecer - Aula de API Golang e MySQL
Nesta aula testamos os erros que podem acontecer na função de listarLivros
.
Pode haver um erro na consulta ao banco de dados com o db.Query
.
Também pode haver um erro na hora de atribuir os valores de um registro à uma struct de Golang com o Rows.Scan
.
Summary
Resumo da Aula de GoLun
Data: [Data da aula não mencionada]
Tema: Testando erros na função listar-libros da API JotaSunkredi
Principais Tópicos
-
Introdução
- Continuação da aula sobre a API JotaSunkredi.
-
Teste de Erros na Função listar-libros
- O foco da aula é testar os erros que podem ocorrer na função
listar-libros
.
- O foco da aula é testar os erros que podem ocorrer na função
-
Primeiro Erro: Erro de Sintaxe em Consulta SQL
- Um exemplo de erro de sintaxe:
SELECT 2
. - Espera-se que a aplicação retorne
500 Internal Server Error
e forneça mensagem de erro. - O log do erro indica a falha na consulta SQL.
- Um exemplo de erro de sintaxe:
-
Segundo Erro: Problemas na Função Scan
- Problemas podem surgir ao escanear registros se um argumento estiver ausente.
- Exemplo: não fornecer o terceiro argumento na consulta que tem três colunas resultará em erro.
- A aplicação irá retornar uma lista vazia (
200 OK
) para o cliente, mas registrará o erro no log.
-
Logs de Erros
- O terminal mostrará mensagens indicando problemas na execução da função quando os erros ocorrem.
-
Correção de Erros
- O instrutor corrige o erro de scan, garantindo que todos os argumentos necessários sejam fornecidos.
- O erro de fechamento de registros (
close
) é apresentado como um exercício para o aluno.
Conclusão
- A aula trouxe a prática de testar e tratar erros comuns na API, incentivando o entendimento sobre o fluxo de erro e a importância de logs.
- A próxima aula será agendada e o instrutor se despede.
Fim da Aula
Video Transcript
Olá pessoal, estamos de volta com mais uma aula de GoLun. A API JotaSunkredi
simples vamos continuar. Nesta aula vamos testar os erros que podem acontecer na
função listar-libros. Então vamos lá, voltando aqui ao código fonte no meu
editor de testa. Função listar-libros. Primeiro erro que pode acontecer quando
ele fizer a consulta aqui pode ter esse erro. Como testar isso? Uma maneira de
testar isso é dessa maneira aqui. Talvez você tenha escrito uma consulta com
erro de sintaxe. Por exemplo, eu digito Select 2, isso não é válido.
Então ele vai dar erro aqui. A gente espera que ele fale listar-libros, né? Deixa eu até
dizer erro select para ser mais específico. A descrição do erro vai aparecer na tela.
Note que nesse caso o usuário, o cliente vai receber uma resposta com o código
500 internal server error, tá? E não vai receber uma lista. Vamos testar, eu vou salvar o código.
De volta ao terminal, go run main.go e vamos lá no postman, no meu cliente de
REST aqui, no bar livros get, vou mandar. Note que o status 500 internal server error
e nada na resposta aqui no conteúdo. Vamos no terminal. Note aqui que deu log
listar-libros, erro select e a mensagem do erro select ponto error que ela
funciona, retorna a string aqui com o nome, com a descrição do erro. Olha aqui, erro
1.064. Você tem um erro no de sintaxe no seu SQL, né? Check o manual,
se eu quero, se eu quero. Então ele diz o que tem um erro aqui na consulta que a gente
tem. Então testamos o erro, funciona corretamente. Vou ditar control C para
interroper o servidor. Voltando no editor de texto, tá certo? Testamos essa parte
aqui do erro, tudo certo. Vamos para o próximo erro. O próximo erro que pode
acontecer é aqui na parte do scan. Talvez tenha problema quando ele escanear os
errors lá do registro. Uma maneira de poder produzir esse erro é produzir esse,
por exemplo, note que o nosso select tem três colunas e eu esqueço de botar aqui
nos argumentos a terceira, o terceiro argumento para o título. Ele vai dar erro. A gente
vai ver que o console imprima, listar livros, erro de scan e a descrição do erro. E o
que vai acontecer aqui é ele vai dar o continue na repetição for. Nesse caso, ele vai pular, né?
Esse livro, porque deu problema a escanear. Como todos os livros vai ter problema, porque eu
pus para todos os livros aqui, ele vai pular todos os elementos do registro e no final vai
retornar, se lembra a fatia de livros, né? No caso de Jason vai ser uma array sem nenhum
elemento no final. Note que nesse caso não há resposta de 500. Ele vai mandar uma resposta
para o cliente, mas o problema é só a gente que vai ver internamente através do log. O cliente
não vai saber que teve erro. Então vamos testar isso. Eu já fiz a besteira aqui, tirei o terceiro
argumento, vamos no terminal, rodar o servidor, volto lá no seu cliente de rest e faça o pedido
e ligar o livro. Note que recebemos como resposta uma lista vazia com 200 ok. Então do ponto de vista
do cliente não houve nenhum problema. A gente pensa que não há nenhum livro, mas olhando lá no
terminal, note que teve quatro logs. Quatro logs porque tem quatro registros? Se eu te mostrar aqui
o meu MySQL tem quatro registros, por isso que deu quatro logs. Então para cada registro,
como eu omitir o terceiro argumento lá para o scan, ele dá erro. Lista livro, erro de scan,
esperava que você tenha, esperava três argumentos de destino no scan, não dois.
Então esse é o erro que aconteceu, então está funcionando direitinho do jeito que a gente programou.
Voltando o editor de texto aqui, eu vou reverter esse erro para corrigir, agora vai dar tudo certo com
três argumentos que corresponde lá ao select três colunas. Pronto, então esse erro aqui está testado
e funciona corretamente. Vamos ver se tem mais um erro aqui. Tem esse erro de registro close,
como será que a gente pode testar esse erro? Bem, eu vou deixar como exercício para você
pensar se quiser fazer para testar esse erro. Então para essa aula é só e até a próxima. Tchau.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: