Gostaria de saber se eu mudar o then e catch para try e catch funcionara normalmente? ou é um padrão se usar then no JS? Há um padrão a se usar as sintaxe ou vai de como você mesmo modelar as coisas?
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!
Gostaria de saber se eu mudar o then e catch para try e catch funcionara normalmente? ou é um padrão se usar then no JS? Há um padrão a se usar as sintaxe ou vai de como você mesmo modelar as coisas?
Olá Christian, tudo bem?
Então, neste caso são coisas diferentes, mas acredito que peguei a sua linha de raciocinio
Quando estamos trabalhando com Promises teremos o then para capturar um valor futuro positivo, e o catch para capturar erros, neste caso utilizar o try & catch não funcionária, pois ele executaria de maneira procedural, e teríamos o erro apenas depois do bloco de código executar
const throwError = () => new Promise( (resolve, reject) => reject("Houve um erro"));
(function main(){
try {
throwError();
}catch(error){
console.log(error)
}
console.log("Sai do Try Catch!");
}
)()E o resultado no console:
Sai do Try Catch!
(node:8343) UnhandledPromiseRejectionWarning: Houve um erro
(node:8343) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().Então neste caso temos que explicitamente utilizar thene o catch
throwError()
.then( resultado => console.log(resultado))
.catch( erro => console.log(erro))Agora podemos utilizar o try & catch se mudarmos para uma função assíncrona, pois dessa forma podemos combinar o async com o await na Promise, e ela irá esperar dentro do bloco de tratamento até ter o resultado:
(async function main(){
try {
await throwError();
}catch(error){
console.log(error)
}
console.log("Sai do Try Catch!");
}
)()E no console:
Houve um erro
Sai do Try Catch!Então são abordagens diferentes, trabalhando com Promises diretamente precisamos utilizar o then & catch, quando utilizamos o async & await podemos utilizar o try & catch
Compreendeu?
Abraços e Bons Estudos!