Warum kann ich nicht einfach einen Error
innerhalb des catch-Rückrufs werfen und den Prozess den Fehler so behandeln lassen, als ob er in einem anderen Bereich wäre?
Wenn ich es nicht tue, wird console.log(err)
nichts ausgedruckt und ich weiß nichts darüber, was passiert ist. Der Prozess endet gerade ...
Beispiel:
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
});
Wenn Rückrufe im Haupt-Thread ausgeführt werden, warum wird der Error
von einem Schwarzen Loch verschluckt?
.catch((e) => { throw new Error() })
schreiben .catch((e) => { return Promise.reject(new Error()) })
oder einfach.catch((e) => Promise.reject(new Error()))
.catch(…)
.