明白error类型让你更快定位开发报错
在javascript中,开发遇到的项目报错,很多时候都是通过 Error 这个类来展示的,清楚Error的类型可以更好定位项目中的问题
Error的类型
Error
Error是所有其它错误的父类,我们抛出异常时,不指定抛出的异常类型时,就用直接使用 Error
ReferenceError
表示引用的变量不存在,当没有定义变量,却直接引用时会报 Uncaught ReferenceError
console.log(userName)

TypeError
表示数据类型不正确,当定义了一个变量没有赋值时,此时值为undefined,再从undefined上获取元素会报 Uncaught TypeError
let user
console.log(user.name)

RangeError
表示数据值不在所允许的范围内,当函数循环调用导致栈溢出时,会报 Uncaught RangeError
function foo(){
foo()
}
foo()

SyntaxError
表示语法错误,当编写不符合javascript语法规范的代码时,会报 Uncaught
SyntaxError,比如 双引号里面包含双引号
const name = """"

抛出错误
抛出异常通过throw关键字,抛出内容的类型有五种,报错的提醒为 Uncaught + 内容
字符串
function foo(){
throw 'hello'
}
foo()

对象
function foo(){
throw {
code: 404,
message: '找不到页面'
}
}
foo()

自定义类
class IceError {
constructor(code, message){
this.code = code
this.message = message
}
}
function foo(){
throw new IceError('404', '找不到页面')
}
foo()

Error类
function foo(){
throw new Error('找不到页面')
}
foo()

Error的子类
function foo(){
throw new SyntaxError('语法错误')
}
foo()

当存在异常时,如果不捕获,会一层一层往上传,直到全局作用域,影响阻塞代码的执行。
捕获错误
通过 try catch 来对异常进行捕获,当出现错误时,则执行 catch 中的代码
function foo(){
throw new Error('foo函数出错啦')
}
function bar(){
try {
foo()
} catch (error) {
console.log('捕获了foo函数的错误')
}
}
bar()

try catch 还有finally的属性,无论是否捕获了错误,都会执行 finally 中的代码
function foo(){
console.log('foo函数没有出错')
}
function bar(){
try {
foo()
} catch (error) {
console.log('捕获了foo函数的错误')
} finally {
console.log('执行了finally')
}
}
bar()

错误对象
- stack 函数调用栈记录信息
- message 错误相关信息
try {
console.log(a);
} catch (error) {
console.log("error>>>>>>>>>>>", error);
console.log("error.message>>>>>>>>>>>", error.message);
console.log("error.stack>>>>>>>>>>>", error.stack);
}

以上就是error类型和捕获的相关内容,关于js高级,还有很多需要开发者掌握的地方,可以看看我写的其他博文,持续更新中~
明白error类型让你更快定位开发报错的更多相关文章
- Selenium中如何使用xpath更快定位
在学习Selenium路上,踩了也不少坑,这是我最近才发现的一个新写法,好吧,"才发现"又说明我做其他事了.对的,我现在还在加班! 开车~~~ 例子:知乎网 标签:Python3. ...
- 通过类型断言获取error类型,获得更详细的信息
package main import ( "fmt" "os" ) func main() { f, err := os.Open("/test.t ...
- 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第七章:失败更快:爆发测试与实验的能量 欢迎来到实验和测试这个棒极了的世界! 如果Web拥有一个超越所有其他渠道的巨大优势,它就 ...
- 让DB2跑得更快——DB2内部解析与性能优化
让DB2跑得更快——DB2内部解析与性能优化 (DB2数据库领域的精彩强音,DB2技巧精髓的热心分享,资深数据库专家牛新庄.干毅民.成孜论.唐志刚联袂推荐!) 洪烨著 2013年10月出版 定价:7 ...
- 利用更快的r-cnn深度学习进行目标检测
此示例演示如何使用名为“更快r-cnn(具有卷积神经网络的区域)”的深度学习技术来训练对象探测器. 概述 此示例演示如何训练用于检测车辆的更快r-cnn对象探测器.更快的r-nnn [1]是r-cnn ...
- 比Python、Java更快的 Go 语言,能否称霸江湖?
关注之后加星标,江湖要事早知道 文章来源:jb51.net 有一种语言堪称比语言排行榜前五热门选手的Python.Java更快,它就是GO语言. Go于2009年11月正式宣布推出,成为开放源代码 ...
- 使用QFileInfo类获取文件信息(在NTFS文件系统上,出于性能考虑,文件的所有权和权限检查在默认情况下是被禁用的,通过qt_ntfs_permission_lookup开启和操作。absolutePath()必须查询文件系统。而path()函数,可以直接作用于文件名本身,所以,path() 函数的运行会更快)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无 ...
- 让Spring Boot启动更快
关注公众号:锅外的大佬, 每日推送国外技术好文,帮助每位开发者更好成长 原文链接:https://dev.to/bufferings/lets-make-springboot-app-start-fa ...
- CSS vs. JS Animation: 哪个更快
CSS vs. JS Animation: 哪个更快? CSS vs. JS Animation: 哪个更快? 基于JavaScript的动画竟然已经默默地比CSS的transition动画快了?而且 ...
- TableCache设置过小造成MyISAM频繁损坏 与 把table_cache适当调小mysql能更快地工作
来源: 前些天说了一下如何修复损坏的MyISAM表,可惜只会修复并不能脱离被动的境地,只有查明了故障原因才会一劳永逸. 如果数据库服务非正常关闭(比如说进程被杀,服务器断电等等),并且此时恰好正在更新 ...
随机推荐
- Windows亚克力特效代码实现(Dev c++可以编译通过)
#include <windows.h> #include <dwmapi.h> // 定义一个枚举类型,表示不同的窗口组合状态 enum AccentState { ACCE ...
- Python工具箱系列(三十)
PostgreSQL MySQL的口号是"世界上最流行的开源关系型数据库",而PostgreSQL的Slogan则是"世界上最先进的开源关系型数据库(PostgreSQL ...
- 我自己写了一个波场(Tron)本地网页版钱包
最近由于项目需要,需要给每个用户分配一个充币地址,考虑到钱包安全性和方便管理,于是自己动手写了一个本地网页版的钱包,附上源代码跟大家交流下. Github 源代码地址 钱包和项目是分离的,项目通过鉴权 ...
- 2020-09-01:mysql里什么是检查点、保存点和中间点?
福哥答案2020-09-01: 检查点checkpoint:批量刷盘.在一定程度上代表了刷到磁盘时日志所处的日志序列号(LSN)位置.标记重做日志中已经完成刷到磁盘的位置点,如果缓冲池中有很多重做日志 ...
- 2020-08-13:Hadoop生态圈的了解?
福哥答案2020-08-13: 该项目包括以下模块:1.Common(公共工具)支持其他Hadoop模块的公共工具. 2.HDFS(Hadoop分布式文件系统)提供对应用程序数据的高吞吐量访问的分布式 ...
- 2022-07-13:给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0)。 每一步,你可以从下标 i 跳到下标 i + 1 、i - 1 或者 j : i + 1 需满足:i +
2022-07-13:给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为 0). 每一步,你可以从下标 i 跳到下标 i + 1 .i - 1 或者 j : i + 1 需满足:i + ...
- UCOS II源码分析二
最近大家都沉浸在找到实习的快乐中,自我充电的时间相对减少了,今天重拾一下ucosii的学习,记录如下: 上一篇文章分析了ucosii源码文件组织结构以及简单介绍了各个文件夹里对应文件的功能,要是对uc ...
- hw面试常见中间件漏洞
apache漏洞 未知扩展名解析漏洞 漏洞原理:Apache对文件名后缀的识别是从后往前进行的,当遇到不认识的后缀时,继续往前,直到识别 影响版本:使用module模式与php结合的所有版本,apac ...
- 今天在内部 Galaxy 分析平台操作探针引物设计小工具程序,调用 Ensembl API 获取相关序列和信息时,发现官网 MySQL server 异常,报告问题后当天晚上就收到了回复,并且修......
本文分享自微信公众号 - 生信科技爱好者(bioitee).如有侵权,请联系 support@oschina.cn 删除.本文参与"OSC源创计划",欢迎正在阅读的你也加入,一起分 ...
- C++面试八股文:什么是RAII?
某日二师兄参加XXX科技公司的C++工程师开发岗位第13面: 面试官:什么是RAII? 二师兄:RAII是Resource Acquisition Is Initialization的缩写.翻译成中文 ...