Olá, Rômulo! Tudo bem?
Bom ponto.
Nesses casos, é melhor você dar preferência ao erro 404, para que a sua API seja mais descritiva e clara, e o cliente entenda como prosseguir. Mas, realmente, não podemos retornar os dois erros no bloco catch
.
Assim, uma boa alternativa é você criar sua própria classe de erro (o instrutor inclusive faz algo assim mais a frente). Desta forma, você tem mais controle sobre seus erros, podendo usar condicionais (if
) para decidir que erro deseja lançar manualmente (throw new Error
). Então, neste caso, por exemplo, você poderia fazer:
- Verifica se o corpo da requisição possui os dados: se sim, continua, se não, retorna um erro dizendo exatamente isso;
- Após o processo acima, verifica se o ID é válido: se sim, continua a operação, se não, retorna um erro específico.
Em APIs mais robustas, esse processo é um pouco mais claro, justamente porque há mais divisão de responsabilidades, e os erros podem ocorrer em "níveis" diferentes da aplicação. Aqui, por exemplo, teríamos um erro de não encontrado dentro do próprio pegarPorId
, e sendo assim, o método de PUT não precisaria se preocupar com qual erro retornar.
Mas fique tranquilo, mais a frente no curso o instrutor irá tratar disso e ficará mais claro!
Espero ter ajudado, e bons estudos!