Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

DUVIDA TRY CATCH E THEN CATCH

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?

1 resposta
solução!

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!