每当 JavaScript 中发生任何运行时错误时,都会引发Error对象。在许多情况下,我们还可以扩展这些标准Error对象,以创建我们自己的自定义Error对象。

属性

Error 对象具有2个属性

name ——设置或返回错误名称。具体来说,它返回错误所属的构造函数的名称。

它有6个不同的值-EvalError,RangeError,ReferenceError,TypeError,SyntaxError,URIError。我们将在本文后面讨论这些内容,这些所有错误类型均继承自Object-> Error-> RangeError。

message-设置或返回错误消息

事例

1.通用的错误

我们可以使用Error对象创建一个新的Error,然后使用throw关键字显式抛出该错误。

2.处理特定的错误类型

我们还可以使用如下的instanceof关键字来处理特定的错误类型。

3.自定义错误类型

我们还可以通过创建继承Error对象的类来定义自己的错误类型。

浏览器兼容性

Error 的对象类型

现在让我们讨论可用于处理不同错误的不同错误对象类型。

1. EvalError

创建一个error实例,表示错误的原因:与 eval() 有关。

这里要注意的一点是,当前ECMAScript规范不支持它,并且运行时不会将其抛出。取而代之的是,我们可以使用SyntaxError错误。但是,它仍然可以与ECMAScript的早期版本向后兼容。

语法

new EvalError([message[, fileName[, lineNumber]]])

事例

浏览器兼容性

2. RangeError

创建一个error实例,表示错误的原因:数值变量或参数超出其有效范围。

new RangeError([message[, fileName[, lineNumber]]])

下面的情况会触发该错误:

1)根据String.prototype.normalize(),我们传递了一个不允许的字符串值。

// Uncaught RangeError: The normalization form should be one of NFC, NFD, NFKC, NFKDString.prototype.normalize(“-1”)

2)使用Array构造函数创建非法长度的数组

// RangeError: Invalid array lengthvar arr = new Array(-1);

3)诸如 Number.prototype.toExponential(),Number.prototype.toFixed()或Number.prototype.toPrecision()之类的数字方法会接收无效值。

事例

对于数值

对于非数值

浏览器兼容性

3. ReferenceError

创建一个error实例,表示错误的原因:无效引用。

new ReferenceError([message[, fileName[, lineNumber]]])

事例

ReferenceError被自动触发。

显式抛出ReferenceError

浏览器兼容性

4. SyntaxError

创建一个error实例,表示错误的原因:eval()在解析代码的过程中发生的语法错误。

换句话说,当 JS 引擎在解析代码时遇到不符合语言语法的令牌或令牌顺序时,将抛出SyntaxError。

捕获语法错误

创建一个SyntaxError

浏览器兼容性

5. TypeError

创建一个error实例,表示错误的原因:变量或参数不属于有效类型。

new TypeError([message[, fileName[, lineNumber]]])

下面情况会引发 TypeError:

  • 在传递和预期的函数的参数或操作数之间存在类型不兼容。
  • 试图更新无法更改的值。
  • 值使用不当。

例如:

捕获TypeError

创建 TypeError

浏览器兼容性

6. URIError

创建一个error实例,表示错误的原因:给 encodeURI()或 decodeURl()传递的参数无效。

如果未正确使用全局URI处理功能,则会发生这种情况。

简单来说,当我们将不正确的参数传递给encodeURIComponent()或decodeURIComponent()函数时,就会引发这种情况。

new URIError([message[, fileName[, lineNumber]]])

encodeURIComponent()通过用表示字符的UTF-8编码的一个,两个,三个或四个转义序列替换某些字符的每个实例来对URI进行编码。

// "https%3A%2F%2Fmedium.com%2F"encodeURIComponent('https://medium.com/');

decodeURIComponent()——对之前由encodeURIComponent创建的统一资源标识符(Uniform Resource Identifier, URI)组件进行解码。

// https://medium.com/decodeURIComponent("https%3A%2F%2Fmedium.com%2F")

捕捉URIError

显式抛出URIError

浏览器兼容性


作者:Isha Jauhari 译者:前端小智 来源:dottoro原文:http://help.dottoro.com/ljfhismo.php


主进程中发生javascript错误_你知道 JavaScript 中的错误对象有哪些类型吗?相关推荐

  1. javascript排序_鸡尾酒在JavaScript中排序

    javascript排序 Just want the code? Scroll all the way down for two versions of the code: 只需要代码? 一直向下滚动 ...

  2. “System.OutOfMemoryException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理

    "System.OutOfMemoryException"类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理 参考文章: (1)"System.Ou ...

  3. “System.NullReferenceException”类型的异常在 App_Web_2tjb2nqh.dll 中发生,但未在用户代码中进行处理(C#开发)

    "System.NullReferenceException"类型的异常在 App_Web_2tjb2nqh.dll 中发生,但未在用户代码中进行处理(C#开发) 参考文章: (1 ...

  4. “System.NullReferenceException”类型的异常在 App_Web_j2s3gau3.dll 中发生,但未在用户代码中进行处理的Bug解决方案

    "System.NullReferenceException"类型的异常在 App_Web_j2s3gau3.dll 中发生,但未在用户代码中进行处理的Bug解决方案 参考文章: ...

  5. .Net 6.0中的新增特性_.Net 6.0中的新增功能

    .Net 6.0中的新增特性_.Net 6.0中的新增功能 一..Net 6 介绍 .NET 6 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持. .NET 6 是首个原生支持 ...

  6. css如何保留空格,HTML/CSS中的空格处理_如何保留页面中的空格

    html中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: fly63 com 显示效果为: fly63 com 备注: ...

  7. amp jsp空格 nps_HTML/CSS中的空格处理\_如何保留页面中的空格【转】

    HTML/CSS中的空格处理\_如何保留页面中的空格[转] HTML中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: ...

  8. javascript面试_在编码面试中需要注意的3个JavaScript问题

    javascript面试 JavaScript is the official language of all modern web browsers. As such, JavaScript que ...

  9. javascript编写_如何在JavaScript中使用解构来编写更简洁,功能更强大的代码

    javascript编写 by Ashay Mandwarya ?️?? 由Ashay Mandwarya提供吗? 如何在JavaScript中使用解构来编写更简洁,功能更强大的代码 (How to ...

最新文章

  1. 超声检查预测一年后RA病人的MRI侵蚀进展
  2. mysql 5.8 新特性_MySQL 5.4的新特性解析
  3. cmd.exe_参数_启动参数
  4. Android 图形架构
  5. 数据增强 数据集扩充_数据扩充的抽象总结
  6. 执行存储过程执行时,报ORA-01031权限不足
  7. 基于单片机智能电子密码锁设计(毕业设计资料)
  8. MATLAB学习八(二):标准差std
  9. 关于邮箱的正则表达式
  10. [UVA]1391 Astronauts 2-Sat 朝花夕拾
  11. HTML5 音频文件
  12. 【学习笔记 — Flink 处理迟到数据(★)】
  13. 高程计算机编程序,卡西欧CASIO系列编程计算器在公路测量中的应用.doc
  14. 11.2NOIP模拟赛
  15. 一个水藻,经过两天的生长后,从第3天开始每天都会分裂出一个新藻,而分裂出的新藻同样经过两天的生长,也会从第3天开始每天分裂出一个新藻,问经过n天后,共有多少个水藻存在。暂时不考虑藻死亡的情况。
  16. 实验三-香农编码的MATLAB实现
  17. 英语学习--八月转折
  18. Stream之StreamwriterStreamReader
  19. Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)
  20. EOS 智能合约开发实践(一)EOS钱包的简单使用

热门文章

  1. java中同步锁的原理和实现
  2. 独家 | 2021双11背后的数据库硬核科技
  3. 会向业务“砍需求”的技术同学,该具备哪6点能力?
  4. 阿里AI再出神器,“你是什么垃圾”一拍便知
  5. 为什么服务端程序都需要先 listen 一下?
  6. 小米百万美金大奖花落机器狗团队,5 年千亿重砸研发鼓励创新
  7. 移动云帮我养出了一片致富鱼塘
  8. 终于,我也到了和 Eclipse 说再见的时候,难说再见
  9. 4K修复版《海上钢琴师》登陆全国院线,一文读懂背后的黑科技!
  10. 腾讯云与智慧产业总裁汤道生:产业互联网是一场“持久战”