Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Troca no tratamento de erro

Não entendi ao certo como que esta funcionando o código nesse sentido, por no else do paginar.js esta lançando um requisição incorreta

next(new RequisicaoIncorreta());

porem no manipuladorDeErros ele alterou para erroBase

} else if (erro instanceof ErroBase) {
    erro.enviarResposta(res);

Por que esta enviando a mensagem do requisicaoIncorreta sendo que estamos capturando um erroBase ??

2 respostas
solução!

Olá, Leonardo, tudo bem?

O que tá acontecendo é que RequisicaoIncorreta é uma subclasse de ErroBase. Isso significa que RequisicaoIncorreta é um tipo específico de ErroBase. Então, quando você tem uma instância de RequisicaoIncorreta, ela também é uma instância de ErroBase.

No código, quando ocorre um erro, é criada uma nova instância de RequisicaoIncorreta e passada para a função next(), isso faz com que o erro seja capturado pelo manipulador de erros.

Já nomanipulador de erros, ele verifica se o erro é uma instância de ErroBase (e lembre-se, RequisicaoIncorreta é um tipo de ErroBase), então ele chama o método enviarResposta(res) no erro. Como RequisicaoIncorreta é uma subclasse de ErroBase, ela herda todos os métodos de ErroBase, mas também pode ter seus próprios métodos. Nesse caso, RequisicaoIncorreta não tem seu próprio método enviarResposta(res), então ele usa o método da classe mãe, ErroBase.

O que significa que, mesmo que estejamos capturando um ErroBase, a mensagem do RequisicaoIncorreta é enviada porque é uma instância de RequisicaoIncorreta que está sendo passada para o manipulador de erros.

Espero que isso esclareça sua dúvida!

Um abraço e bons estudos.

Obrigado, entendi. Havia esqueci dessa particularidade de que os metodos tambem são herdados, irei rever sobre classes em JS.