首页 > 解决方案 > UnhandledPromiseRejectionWarning 在抛出错误但未记录错误时发生在 catch

问题描述

我做了一些实验,我注意到了这个奇怪的事情

const isNumber = (number) => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if (typeof number !== "number") {
                reject("this is not a number!");
            } else {
                resolve("this is a number!");
            }
        }, 1000);
    });
};

isNumber("wrong")
    .then(result => console.log(result))
    .catch(err => console.log(err));

这段代码可以正常工作。

但是,如果我将最后 3 行更改为

isNumber("wrong")
    .then(result => console.log(result))
    .catch(err => {throw err});

它会告诉我我的承诺的拒绝是未处理的,即使它是?

标签: node.jspromise

解决方案


推荐阅读