主进程中发生javascript错误_你知道 JavaScript 中的错误对象有哪些类型吗?
每当 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 中的错误对象有哪些类型吗?相关推荐
- javascript排序_鸡尾酒在JavaScript中排序
javascript排序 Just want the code? Scroll all the way down for two versions of the code: 只需要代码? 一直向下滚动 ...
- “System.OutOfMemoryException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理
"System.OutOfMemoryException"类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理 参考文章: (1)"System.Ou ...
- “System.NullReferenceException”类型的异常在 App_Web_2tjb2nqh.dll 中发生,但未在用户代码中进行处理(C#开发)
"System.NullReferenceException"类型的异常在 App_Web_2tjb2nqh.dll 中发生,但未在用户代码中进行处理(C#开发) 参考文章: (1 ...
- “System.NullReferenceException”类型的异常在 App_Web_j2s3gau3.dll 中发生,但未在用户代码中进行处理的Bug解决方案
"System.NullReferenceException"类型的异常在 App_Web_j2s3gau3.dll 中发生,但未在用户代码中进行处理的Bug解决方案 参考文章: ...
- .Net 6.0中的新增特性_.Net 6.0中的新增功能
.Net 6.0中的新增特性_.Net 6.0中的新增功能 一..Net 6 介绍 .NET 6 作为 LTS 长期支持版本,.NET 6 将会获得 3 年的技术支持. .NET 6 是首个原生支持 ...
- css如何保留空格,HTML/CSS中的空格处理_如何保留页面中的空格
html中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: fly63 com 显示效果为: fly63 com 备注: ...
- amp jsp空格 nps_HTML/CSS中的空格处理\_如何保留页面中的空格【转】
HTML/CSS中的空格处理\_如何保留页面中的空格[转] HTML中的空格的规则 在html中内容中的多个空格一般会被视为一个,连续的多个空格符被自动合并了.同时内容前后的空格也会被清除, 如下: ...
- javascript面试_在编码面试中需要注意的3个JavaScript问题
javascript面试 JavaScript is the official language of all modern web browsers. As such, JavaScript que ...
- javascript编写_如何在JavaScript中使用解构来编写更简洁,功能更强大的代码
javascript编写 by Ashay Mandwarya ?️?? 由Ashay Mandwarya提供吗? 如何在JavaScript中使用解构来编写更简洁,功能更强大的代码 (How to ...
最新文章
- 超声检查预测一年后RA病人的MRI侵蚀进展
- mysql 5.8 新特性_MySQL 5.4的新特性解析
- cmd.exe_参数_启动参数
- Android 图形架构
- 数据增强 数据集扩充_数据扩充的抽象总结
- 执行存储过程执行时,报ORA-01031权限不足
- 基于单片机智能电子密码锁设计(毕业设计资料)
- MATLAB学习八(二):标准差std
- 关于邮箱的正则表达式
- [UVA]1391 Astronauts 2-Sat 朝花夕拾
- HTML5 音频文件
- 【学习笔记 — Flink 处理迟到数据(★)】
- 高程计算机编程序,卡西欧CASIO系列编程计算器在公路测量中的应用.doc
- 11.2NOIP模拟赛
- 一个水藻,经过两天的生长后,从第3天开始每天都会分裂出一个新藻,而分裂出的新藻同样经过两天的生长,也会从第3天开始每天分裂出一个新藻,问经过n天后,共有多少个水藻存在。暂时不考虑藻死亡的情况。
- 实验三-香农编码的MATLAB实现
- 英语学习--八月转折
- Stream之StreamwriterStreamReader
- Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)
- EOS 智能合约开发实践(一)EOS钱包的简单使用
热门文章
- java中同步锁的原理和实现
- 独家 | 2021双11背后的数据库硬核科技
- 会向业务“砍需求”的技术同学,该具备哪6点能力?
- 阿里AI再出神器,“你是什么垃圾”一拍便知
- 为什么服务端程序都需要先 listen 一下?
- 小米百万美金大奖花落机器狗团队,5 年千亿重砸研发鼓励创新
- 移动云帮我养出了一片致富鱼塘
- 终于,我也到了和 Eclipse 说再见的时候,难说再见
- 4K修复版《海上钢琴师》登陆全国院线,一文读懂背后的黑科技!
- 腾讯云与智慧产业总裁汤道生:产业互联网是一场“持久战”