Was just recovering from last Node.js blocking non-blocking stuff, I come to another JS injury called error-handling with promises.
This injury was again caused to me by not being able to distinguish between blocking and non-blocking code.
The below question is from javascript.info website.
What do you think? Will the .catch trigger? Explain your answer.
new Promise(function (resolve, reject) {
setTimeout(() => {
throw new Error("Whoops!");
}, 1000);
}).catch(console.error);
The hint: Look at the code like this:
new Promise(function (resolve, reject)
// try {
{
setTimeout(() => {
throw new Error("Whoops!");
}, 1000);
})
//} catch {
.catch(console.error);
// }
Comment down your answer below!
Top comments (2)
I thought the compiler would catch it, but when I ran it, the result differed from my expectation. Maybe it's because the error is in a different scope inside setTimeout? 🤔
The main thread execution looks something like this:
The throw error statement will hang outside try...catch guards when defined in a callback of an async operation.