try-catch

try-catch

老师好,想问下这里的try-catch这一块,是理解成,遍历数组尝试创建XMLHttpRequest对象,如果版本号不符合,会跳转到catch(ex)后面的语句里,但这里对错误没有操作所以循环继续,直到遍历结束,如果还是匹配不上版本号,捕获的错误会被下面else里的throw抛出吗?

那为什么在遍历的时候,catch捕获的错误不会被下面else里的throw抛出呢?

对try-catch-throw这一块不太熟悉,麻烦老师解答下

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好同学,解答如下:

1. if..else中,只要有一个执行,就不会再执行其他的了。最下面的else需要在它前面的条件都不成立的时候才会执行它。那么既然执行了中间的else if,就不会最后的else了哦。

http://img1.sycdn.imooc.com//climg/5d5e30f000012b1f08070534.jpg

最后else抛出的错误是兼容性判断,有一些浏览器不兼容,没有XMLHttpRequest对象,才会抛出错误提示。

2. 中间的else if中的循环是为了测试哪个版本可用的。之所以不用if,是if括号中写的是一个判断条件,即表达式,条件成立则执行。(例如 5 >6 , a !=b  ,这一类的叫做表达式)

而课程中的案例是要通过执行一个js语句,即xhr = new ActiveXObject(xhrArr[i]) ,看看哪一个版本的能够成功创建对象。try就是用来测试代码块的(即js语句),如果有错误,可以抛出一个错误信息,然后才会执行catch来处理错误,所以用try...catch哦。因为课程中没有体现出来,给同学举一个小例子:

http://img1.sycdn.imooc.com//climg/5d5e346f00015a2a07010371.jpg

祝学习愉快,望采纳。

提问者 且听风吟720 2019-08-22 10:29:48

另外还是不太理解为什么要用try-catch而不是用if来判断

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师