Mozilla says我们可以定义一个对象并抛出它。
这样,我们就可以封装更多的简单字符串消息并将其发送给异常使用者(catch
block ,或 Promise 的 then
方法)。
但是,我不想在 JS 代码中不断定义类型。
是否可以抛出匿名对象?
我尝试抛出新的Error({firstKey:firstValue,secondKey:secondValue})
但它不起作用。我得到[object Object]
。
最佳答案
创建错误时,传递的第一个参数(如果有)将转换为字符串,并且不会在其他任何地方使用。因此,仅使用第一个参数,无法传递对象(如果不使用 JSON.stringify
,这会很难看并且还会丢失信息)。
但是错误可以接受第二个参数 - an object with a cause
property ,然后将其放在错误对象上。您可以使用它来传达您想要的任何信息,包括对象。
const objForCause = {};
try {
throw new Error(
'Something went wrong',
{ cause: { prop: 'val', obj: objForCause } }
);
} catch(err) {
// Not all errors have causes
// Ensure that it does before examining further
if (err.cause) {
console.log(err.cause);
console.log(err.cause.obj === objForCause);
}
}
关于javascript - 我可以在 JavaScript 中抛出匿名对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74563042/