为什么我不能只Error
在catch回调内部抛出错误,让进程像在其他作用域中一样处理错误?
如果我不这样做,那么console.log(err)
什么也不会打印出来,我也不知道发生了什么。这个过程刚刚结束...
例:
function do1() {
return new Promise(function(resolve, reject) {
throw new Error('do1');
setTimeout(resolve, 1000)
});
}
function do2() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject(new Error('do2'));
}, 1000)
});
}
do1().then(do2).catch(function(err) {
//console.log(err.stack); // This is the only way to see the stack
throw err; // This does nothing
});
如果在主线程中执行了回调,为什么Error
会被黑洞吞没?
.catch((e) => { throw new Error() })
写.catch((e) => { return Promise.reject(new Error()) })
还是干脆.catch((e) => Promise.reject(new Error()))
.catch(…)
返回的承诺。