定义和用法:
try/catch/finally 语句用于处理代码中可能出现的错误信息。
错误可能是语法错误,通常是程序员造成的编码错误或错别字。也可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。

try语句允许我们定义在执行时进行错误测试的代码块
catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块
finally 语句在 try 和 catch 之后无论有无异常都会执行
注意: catch 和 finally 语句都是可选的,但你在使用 try 语句时必须至少使用一个。

try {tryCode - 尝试执行代码块 // 如果出错,抛出错误
}
catch(err) {catchCode - 捕获错误的代码块
}
finally {finallyCode - 无论 try / catch 结果如何都会执行的代码块
}

提示: 当错误发生时, JavaScript 会停止执行,并生成一个错误信息。使用 throw 语句 来创建自定义消息(抛出异常)。如果你将 throw 和 try 、 catch一起使用,就可以控制程序输出的错误信息。
比如:如果值是错误的,会抛出一个异常(错误)。catch 会捕捉到这个错误,并显示一段自定义的错误消息:

var obj = {name: 'sun'};
try {if(!obj.age) throw 'age不存在'
} catch(err) {console.log("错误信息:" + err);
}
// 错误信息:age不存在

运行流程:
先执行try里面的代码,如果try里面的代码有错误,就执行catch里面的代码,否则不执行catch里面的代码
下面是一个例子:

var obj = {name: 'sun'};
try {console.log(obj.age.msg)
} catch(err) {console.log("错误信息:" + err.message);
}
// 错误信息:Cannot read properties of undefined (reading 'msg')

用途:一般用于可控的错误,而不是未知的错误,意思就是你很清楚这里可能出错,而且你很清楚什么前提下会出错,你就是要故意利用报错信息来区分错误,就可以把这段代码放进try内,然后出错误的时候就会自动去执行catch里面的代码。
场景:
1.浏览器兼容问题
每个浏览器都有自身的兼容问题,所以try catch能很好的将异常捕获,每个浏览器的异常报错提示也是不一样的,我们就可以在catch里面将报错抛出并作出对应的措施。

2.判断代码非法性

try{console.log(sun)
}
catch(e){console.log('捕获到异常:',e);
}
// 捕获到异常: ReferenceError: sun is not defined

注意:合法判断不会走catch
比如:

try{1===2
}
catch{console.log("不执行")
}
// false

3.try catch只能捕捉到同步的异常,异步的异常无法捕获

try{setTimeout(()=>{console.log(sun)},1000)
}
catch(e){console.log('捕获到异常:',e);
}
// 报错:Uncaught ReferenceError: sun is not defined

思考:面试的时候面试官问到了怎么终止forEach的循环
答案: 用try…catch

js中try...catch和finally的用法相关推荐

  1. JS中 new Date() 各方法的用法

    JS中 new Date() 各方法的用法 1.new Date() 参数篇 a.返回类型为国标时间, b.无参数时可以直接返回输出时的时间, c.有参数时则返回对应时间的国标时间, d.日期中间的符 ...

  2. js中substr,substring,indexOf,lastIndexOf的用法

    js中substr,substring,indexOf,lastIndexOf等的用法 1.substr substr(start,length)表示从start位置开始,截取length长度的字符串 ...

  3. js中substr,substring,indexOf,lastIndexOf的用法小结

    2019独角兽企业重金招聘Python工程师标准>>> js中substr,substring,indexOf,lastIndexOf等的用法 1.substr substr(sta ...

  4. js中定时器与延时器的用法

    js中定时器的主要语法有以下四个: 添加定时器: setTimeout("js语句",时间) setInterval("js语句",时间) 删除定时器(此处的t ...

  5. 简述JS中 appy 和 call 的详细用法

    Apply 和 Call 两个老生常言的方法,使用过程的一些细节还是有很大的异同,具体使用情况可以参照下面例子详细回顾一下. 区别和详解:js中call()和apply()的用法 1.关于call() ...

  6. html页面的text用法,js中innerHTML,innerText,outerHTML用法总结

    如何获取DIV里面的内容,在js中为大家提供了三种方法,分别是outerHTML.innerHTML和innerText,这里要注意大小写!看起来长得很像,那么到底怎么使用以及它们之间有什么区别,我想 ...

  7. js中获取时间new date()的用法

    获取时间: var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFul ...

  8. js中const,var,let区别与用法

    原文链接:https://blog.csdn.net/qq_36784628/article/details/80966826 js中三种定义变量的方式const, var, let的区别. 1. c ...

  9. js 中 try catch用法

    try-catch 语句是什么? try-catch 可以测试代码中的错误.try 部分包含需要运行的代码,而 catch 部分包含错误发生时运行的代码. try-catch语法 try {//在此运 ...

最新文章

  1. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 订单系统
  2. 浙江大学《深度学习与行人重识别》课程课件
  3. linux 内核 数据结构 file_operations、file、inode
  4. OSError: exception: access violation writing and reading
  5. SQL脚本文件的部署研究
  6. 4.3.7 基于类的访问权限
  7. tcp四次挥手,为什么是四次?
  8. 年底要算绩效了,高校青椒有多难?
  9. C++第15周(春)项目2 - 用文件保存的学生名单
  10. PyTorch 1.0 中文官方教程:在 C++ 中加载 PYTORCH 模型
  11. 软件_迅速增加博客友情链接[博]
  12. python适合自学编程吗-对没有编程基础的人来说,直接学Python入门IT合适吗?
  13. java入门第五步之数据库项目实战
  14. 2020王道操作系统,数据结构,计算机网络,计算机组成原理PDF大合集+使用经验
  15. 闪迪tf卡量产工具_Tony哥的自修室:相机SD卡摔碎角,钣金喷漆技术活复原一波...
  16. 盈利稳定增长:盈利收益率法
  17. 关系图谱在反欺诈场景中的应用及实践
  18. 定时器+echarts运行时间太长导致内存溢出页面崩溃
  19. diybox路由器设置教程_无线路由器设置图解,最全面的图文教程
  20. 江苏事业单位——计算机类

热门文章

  1. 默纳克刷机,默纳克刷协议,默纳克显示板 外呼板协议更改 烧录 默纳克各种软件各种刷机
  2. 字符串(汉字)与16进制字符串转换(无乱码)
  3. 【印刷字符识别】OCR键盘数字+字母识别【含Matlab源码 807期】
  4. 如何在Excel中使用CLEAN,FIND和ISERROR工作表函数
  5. mysql数据写入influxdb
  6. 零基础也会的iOS单元测试(作用及入门提升)
  7. 线上突然查询变慢怎么核查
  8. 成为数据分析师的必要条件
  9. 腾讯YSDK米大师接入
  10. Github 开始限制受美国贸易制裁国家的开发者