What is the best practice for error handling in the Promise constructor?
Promises has the great advantage of propagating error in the promise chain, and errors can not escape, but when it comes to the Promise constructor, you have to manually handle the possible errors.
Let me show an example:
new Promise(resolve => {
throw new Error('error in the constructor');
resolve();
});
When the above code runs, the promise never gets resolved (or rejected), so I'm not able to handle the Error up in the promise chain. Now one obvious solution would be:
new Promise((resolve, reject) => {
try {
throw new Error('error in the constructor');
resolve();
} catch(error) {
reject(error)
}
});
But it seems to be a little bit overkill for me to do this manual error checking all the time in the constructor, meanwhile for example in the Promise's then
method I do not need this.
So for example the following solution does the same, but without the manual error handling:
Promise.resolve()
.then(() => {
throw new Error('error in the constructor');
});
So my question is, that is there a better way to do the error handling in the Promise constructor? Or should I use the last example, which is in my opinion much cleaner.