` throw 'foo'` 、 ` throw Error('foo')` 、 `throw new Error('foo')` 之间有什么区别?

2024-02-09

我见过 3 种在 JavaScript 中引发错误的不同方式:

throw 'message';
throw Error('message');
throw new Error('message');

它们之间有什么区别?

注意:我知道类似的问题(1 https://stackoverflow.com/questions/9156176/what-is-the-difference-between-throw-new-error-and-throw-someobject,2 https://stackoverflow.com/questions/42053556/throw-vs-throw-new-error,3 https://stackoverflow.com/questions/13294658/throw-errormsg-vs-throw-new-errormsg, ETC)。它们都没有涵盖所有三种情况。


throw is an 表达 https://en.wikipedia.org/wiki/Expression_(computer_science)它会停止该函数并生成一个例外 https://en.wikipedia.org/wiki/Exception_handling。直接跟随的内容throw在异常中传递。将其视为带有语法糖的函数,因此不必编写throw('message')你写throw 'message'. throw new Error('message')就像throw 'message'只不过传递的是一个对象而不是字符串。

没有区别 http://es5.github.com/#x15.11.1之间throw Error('message') and throw new Error('message'):许多核心 JavaScript 对象允许创建新对象,而无需new构造函数和Error恰好是其中之一。

话虽如此,你应该总是使用throw new Error('message'). The Error对象包含堆栈跟踪和其他有用的调试信息,当您使用字符串文字时,这些信息会丢失。使用 ES6 类创建对象需要使用new and 延伸Error通过班级 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types是保留堆栈跟踪的唯一方法。创建自定义错误类使错误处理更加统一。

也可以看看:极其精致的插图 https://cdn.rawgit.com/indolering/1b524795a44f67dc33540eb2e0e56af6/raw/fa8e50ed6c0ecdd5a1539010614646bb5e6e41ab/error-illustration.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

` throw 'foo'` 、 ` throw Error('foo')` 、 `throw new Error('foo')` 之间有什么区别? 的相关文章

  • 从 Javascript 中的嵌套函数返回值[重复]

    这个问题在这里已经有答案了 考虑这段代码 缩短 function getSecret db transaction function transaction transaction executeSql SELECT FROM table
  • 如何使用 JavaScript 刷新页面?

    如何使用 JavaScript 刷新页面 Use location reload https developer mozilla org en US docs Web API Location reload 例如 每当元素带有以下内容时重新
  • 需要使用 iFrame API 隐藏 YouTube 品牌

    我正在使用 YouTube iFrame API 在我的自定义播放器 javascript 播放器 中加载视频 我需要隐藏 Youtube 品牌 但是在 iOS 设备上 它显示带有以下参数的徽标 playerVars fs 1 autopl
  • Chrome 扩展程序可以相互通信吗?

    我正在编写一个Chrome扩展程序 并且想要实现一个接口或api 以便我将来制作的其他扩展程序可以使用它 最终的效果可能如下 分机 B 呼叫extensionA someMethod someParameters 并向分机A发送一些数据 分
  • Visual Studio 改变 Ctrl-K-D 的工作方式

    In Visual Studio I m using 2012 is there any way of editing the way that Ctrl K D combinations handles its Auto Formatti
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • 如何将类型添加到 Vite 库构建中?

    我按照vite文档使用图书馆模式 https vitejs dev guide build html library mode我能够生成一个工作组件库 我创建了该项目vue ts预设 在我的组件中 我定义了道具及其类型 并使用了一些接口 但
  • Pjax动画

    我终于让 pjax 工作了 但我还有另一个问题 如何添加一些 jquery 动画 如淡出 幻灯片旧内容和淡入 幻灯片新内容 默认情况下 pjax 只是更改内容 没有任何好看的效果 任何帮助将非常感激 此致 基本上 你有一堆事件 https
  • 如何调试超时等待异步 Angular 任务?无法在角度页面上找到元素

    编辑 请注意 在 ernst zwingli 的帮助下 我找到了问题的根源 因此 如果您遇到相同的错误 他指出的修复之一可能会帮助您 我的问题是量角器本身的一个已知问题 如果您认为这可能是您 我已经扩展了我的步骤 以在我最初的问题之后查明问
  • Rangy:插入符号下的单词(再次)

    我正在尝试创建一个预输入代码以添加到 wysihtml5 富文本编辑器 基本上 我需要能够插入人员 标签引用 例如 Twitter Github Facebook 我发现一些人试图实现同样的事情的代码 http jsfiddle net A
  • Socket IO 服务器到服务器

    服务器是否可以使用 Socket IO 连接到另一个服务器并被视为客户端 并让它加入房间 接收 io sockets in lobby emit 和更多 第一个服务器也在监听连接 消息 嘿 Brad 下面是我的完整 js 应用程序 供参考
  • JSONP 使用 JQuery 从 HTTPS 协议获取 JSON

    我正在尝试获取从 https 安全站点发送的 JSON 客户端希望不要使用任何服务器端语言 全部都是 Javascript 我读到 当使用 Jquery 中的 ajax 函数时 我必须使用 JSONP 才能从安全站点加载 JSON 我的第一
  • 引用自身的 Javascript 对象...有问题吗?

    由于 Javascript 允许通过引用分配复合值 因此如果 Javascript 对象引用自身 它将创建无限的引用集 如控制台中所示 这看起来像是某种无限循环 但 Chrome 似乎没有问题 这样做是否存在任何内存问题或其他风险 就记忆力
  • AngularStrap 工具提示禁用我的自定义指令

    我正在尝试让 bs tooltip AngularStrap 指令与我自己的名为 checkStrength 的自定义指令一起使用 该指令检查密码的强度 单独使用这些指令中的任何一个时 它们都可以正常工作 但不能一起工作 This http
  • Angularjs : $locationProvider.hashPrefix("!") ;

    我想将网址显示为 www test com 因为我正在使用 locationProvider hashPrefix 但它显示网址为 www test com 我想 哈希之前而不是哈希之后 Thanks var app angular mod
  • 在javascript中创建图像的缩略图方块(不丢失纵横比)

    我正在制作一个客户端拖放文件上传脚本作为书签 在上传之前 我使用 File API 将图像读取为 base64 格式并将其显示为缩略图 This is how my thumbnails look like I want them to l
  • 将 JSON 属性绑定到表单

    我有一个 JSON 对象和一个
  • 如何为 jQuery 插件设置私有变量?

    我想创建一个简单的插件 它使用元素的文本作为默认值 或者您可以在调用插件时设置此值 但是 如果我不设置该值 并为多个元素调用插件 则默认值会成倍增加 function fn reText function options var setti
  • 如何获取符号名称(文字)?

    以下情况 var myVehicle brand Tesla var isMoving Symbol var currentStatus Symbol myVehicle isMoving true myVehicle currentSta
  • Keycloak-js updateToken(minValidity) 需要澄清

    我在Keycloak js中阅读了很多该方法的示例 但没有对以下方法进行明确的解释 updateToken minValidity number KeycloakPromise

随机推荐

  • Snap:编译的拼接代码示例

    我想我前段时间确实问过类似的问题 但由于 API 不稳定 没有得到回答 所以我一直在等待0 13的过去 我不确定提出类似问题是否正确 解释的替代方案是什么runChildrenWith Text and mapSplices在编译的拼接世界
  • 为什么 Safari 或 Firefox 无法处理来自 MediaElementSource 的音频数据?

    Safari 或 Firefox 都无法处理来自MediaElementSource使用网络音频 API http jsbin com ImUmOXe 1 edit js output var audioContext audioProce
  • 需要 grunt@>=0.4.0 的对等点

    为什么我会收到以下错误 我的 grunt 版本是 gt v0 4 0 npm install grunt contrib concat save dev 未满足的对等依赖 grunt gt 0 4 0 错误信息 Projects Hartz
  • Kotlin 本机互操作链接器找不到框架

    我正在尝试在 Kotlin 多平台项目中使用 cocoapods 框架 所以我 将框架添加到 Pods 文件中 运行 pod install created def file added cinterop配置在build gradle gr
  • 不使用指针迭代 C 风格数组

    我正在学习指针算术 并且有一段代码在相当长的一段时间内给我带来了错误 任何帮助将不胜感激 我找不到它 int arr 1 2 3 4 5 for int i 0 i lt 5 i cout lt lt arr arr cout lt lt
  • 匹配标准 10 位电话号码的正则表达式

    我想为支持以下格式的标准美国电话号码编写正则表达式 其中 表示任意数字 到目前为止我想出了以下表达方式 1 9 d 2 d 3 d 4 d 3 s d 3 d 4 1 9 d 2 s d 3 s d 4 1 9 d 2 d 3 d 4 分别
  • 在Python中初始化固定大小的数组[重复]

    这个问题在这里已经有答案了 我想知道如何初始化一个数组 或列表 尚未填充值 以具有定义的大小 例如在 C 中 int x 5 declared without adding elements 我如何在 Python 中做到这一点 您可以使用
  • 给定组合时如何计算索引(字典顺序)

    我知道有一种算法允许给定数字组合 无重复 无顺序 计算字典顺序的索引 这对于我的应用程序加快速度非常有用 例如 combination 10 5 1 1 2 3 4 5 2 1 2 3 4 6 3 1 2 3 4 7 251 5 7 8 9
  • Ember 数据模型重新加载导致 {{each}} 中的项目被删除/插入回来 - 丢失当前状态

    我怎样才能防止itemView在迭代控制器时被删除并重新渲染回原位arrangedContent 如果观察到的模型的属性没有改变值 下面是使用博客文章的简短版本App Post作为示例模型 控制器 sortProperties create
  • 使用“C”执行 API 将 sqlite3 表导出到文件中

    我在 fedora 14 中使用 sqlite3 版本 3 6 23 1 我可以使用这样的命令提示符将表导出到文件中 sqlite3 data db sqlite gt output sample txt sqlite gt select
  • 如何使 TeamCity 构建出现在 TFS 构建资源管理器中?

    我们使用 TFS 2010 进行源代码控制和项目管理 使用 TeamCity 6 0 执行构建和构建报告 测试人员的 CI 和日常部署 在 TeamCity 中设置 TFS 源标签以匹配内部版本号非常简单 但我找不到将其链接回 TFS Bu
  • 使用 osmosis 将 POSTGIS 表转换为 .OSM

    我正在使用 osmosis 0 42 和 PostGIS 2 0 1 并且我正在尝试将一些 postGIS 表导出到 OSM xml 文件 我使用 read pgsql 命令从 postgis 读取 而不是 read apidb 因为它在连
  • 自我类型和特质子类有什么区别?

    特质的自我类型A trait B trait A this B gt 说 A不能混合到一个不扩展的具体类中B 另一方面 如下 trait B trait A extends B 说 任何 具体或抽象 类混合A也会混入B 这两个说法不是说的是
  • 如何基于一个 xcode 项目构建精简版和完整版 iPhone 应用程序?

    我不想维护两套代码 我只需要限制 Lite 版本中的一些功能并在其上添加一些广告即可 怎么做 创建多个目标 您可以通过右键单击目标并选择获取信息来改变构建配置 从那里 你可以做一些事情 比如改变Info plist文件它正在查看 执行诸如将
  • 我们可以在 PWA 应用程序中使用 SQLite 数据库吗

    我正在创建渐进式网络应用程序应用程序 我想将用户信息存储在本地设备中 那么 我该如何做到这一点 如何存储用户登录信息 以便他不必一次又一次登录 浏览器没有 SQLite 您可以使用更接近的方法索引数据库 https caniuse com
  • asm编译器中的二进制表达式

    我正在尝试使用逻辑和符号 执行 if 语句 这是我想要做的 asm字节码中的 y堆栈具有值0和1 我想得到结果 在我们的例子中 逻辑与 不会出现在 if 语句中 我已经尝试过 Opcodes IFEQ 和 Opcodes IFNE 指令 但
  • Chain animator设置 android 动画

    对于android新手 我想做一些流畅的动画 我的设备上有一个包含效果的文件 每个效果都是一个动画 该文件告诉我何时播放效果以及效果持续时间 问题是我无法链接 animatorSet dynmacily AnimatorSet mainAn
  • 限制使用 git log --decorate 显示的引用

    我目前使用的主存储库有 3 个标准遥控器 本地备份 我的开发合作伙伴的工作站和托管存储库 我们有 3 或 4 个分支大部分时间都处于活动状态 其中一个是 master 我全天定期监控分支机构 使用 git log graph oneline
  • jquery 摇动效果和 margin-auto

    有一点烦恼这个 震动效果示例 http jsfiddle net PHPsycho mwVkm 1 在 Firefox 中如果我省略该行 this css margin left this position left 然后该框会向左移动而不
  • ` throw 'foo'` 、 ` throw Error('foo')` 、 `throw new Error('foo')` 之间有什么区别?

    我见过 3 种在 JavaScript 中引发错误的不同方式 throw message throw Error message throw new Error message 它们之间有什么区别 注意 我知道类似的问题 1 https s