Os erros não eram para ser pegos pelo catch?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Os erros não eram para ser pegos pelo catch?
Fala Igor,
Então, segundo a MDN, o then() retorna uma Promise , e possui dois argumentos, um para sucesso e outro para falha.
p.then(quandoRealizada, quandoRejeitada);
p.then(function(valor) {
// sucesso
}, function(motivo) {
// rejeitada
});Caso a requisição seja realizada corretamente executa o primeiro argumento, e caso falhe executa o segundo argumento, como no exemplo dado pelo professor de o servidor estar offline.
Mas vamos supor que a promise foi resolvida, mas a nossa lógica implementada dentro da função de sucesso esta errada e gera um erro. Ele só seria 'pego' pelo catch(). Um exemplo:
var p = new Promise(function(resolve, reject) {
const num = 0;
if (num == 0) {
resolve('Sucesso na requisição');
} else {
reject('Falha na requisição')
}
});
p.then((res) => {
console.log(res);
throw new Error();
}, (err) => {
console.log(err);
})
.catch((error) => {
console.log('Erro pego pelo catch');
})
//*Saída no Console*
//Sucesso na requisição
//Erro pego pelo catchVeja que a requisição é resolvida(realizada com sucesso), mas ela gera um erro que é capturado pelo catch(). Agora se o valor de num for alterado, a requisição falha e gera apenas a mensagem de rejeição e não entra no catch().
Pra facilitar o entendimento, copie esse código e tente executar na sua máquina.
Espero que tenha tenha te ajudado.