javascript - 我可以在 JavaScript 中抛出匿名对象吗?

标签 javascript

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/

相关文章:

java - Base 64 编码,Java 还是 JavaScript?

javascript - 如果评估工作不正常

javascript - 以干净的方式扩展主干 View 和继承选项

javascript - JQuery - 当 child 获得焦点时对 parent 执行操作

javascript - 在 JavaScript 中访问输入文件上传字段

javascript - 删除 - 批量操作 - Laravel

javascript - 从 Angular 中的另一个组件调用模式对话框的正确方法?

javascript - 如何始终显示在 HTML Select 中选择的第一个选项?

javascript - Angular ng-options选择选项视觉反馈问题

javascript - 在 meteor 中设置一个带有助手的类