throw Error(error) 和 throw error 有什么区别

What is the difference between throw Error(error) and throw error

有什么区别:

try {
      const result = await hello();
    } catch (error) {
      throw error;
    }

try {
      const result = await hello();
    } catch (error) {
      throw Error(error);
    }

还有

第二个有必要吗?看起来你只是用错误对象包装错误。哪一个是首选?请帮助我理解。

Promise 拒绝的值可能不是错误对象,而是其他东西:

(async() => {
  try {
    const result = await Promise.reject(5);
  } catch (error) {
    console.log(error);
    console.log(typeof error);
  }
})();

正在做

throw Error(error);

确保抛出的值绝对是一个 Error 对象,如果稍后检查抛出的值并且预期是这样的对象,这可能很重要。例如,您不希望抛出 undefinednull(我知道这很奇怪,但并非不可能)并访问其中的 属性 然后抛出真正捕捉到的点。

const hello = () => new Promise((resolve, reject) => {
  reject();
});
(async() => {
  try {
    const result = await hello();
  } catch (error) {
    throw error;
  }
})()
  .catch((error) => {
    console.log('The error message was:');
    console.log(error.message);
  });