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 对象,如果稍后检查抛出的值并且预期是这样的对象,这可能很重要。例如,您不希望抛出 undefined
或 null
(我知道这很奇怪,但并非不可能)并访问其中的 属性 然后抛出真正捕捉到的点。
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);
});
有什么区别:
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 对象,如果稍后检查抛出的值并且预期是这样的对象,这可能很重要。例如,您不希望抛出 undefined
或 null
(我知道这很奇怪,但并非不可能)并访问其中的 属性 然后抛出真正捕捉到的点。
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);
});