博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS之try..catch...
阅读量:4979 次
发布时间:2019-06-12

本文共 1401 字,大约阅读时间需要 4 分钟。

try 测试代码块的错误。

catch 语句处理错误。

throw 创建并跑出错误。

try {   //在这里运行代码   抛出错误}catch(err){   //在这里处理错误}

 

实例:

请输出一个 5 到 10 之间的数字:

 

(3)适用场景

      大多数情况下,try catch适用于两种场合:

      1、浏览器原罪的场合:也就是兼容性场合,因为浏览器兼容性不是程序员能改正的,所以只能try catch:由于不同浏览器的报错提示是不一样的,根据捕获的浏览器的报错提示判断用户的浏览器,然后做出对应的措施,这时候使用try catch是巧妙的办法,如果用if就比较笨拙,因为if通常只能反馈真或假,不能直接反馈浏览器的报错内容。
      2、考虑如下代码。window.a.b是非法的,再跟2对比就没有意义,这样非法的条件,在try catch中仍可以继续运行下去。但在if中window.a.b已经报错,整个页面都会坏掉。如果希望用if写,那么必须先判断window.a是否是合法的,window.a是合法的前提下再判断window.a.b是不是合法的,如果也是合法的,再判断window.a.b是否不等于2,这样是不是很蠢?这时就体现出try catch的妙处了,程序不但知道window.a.b !== 2是假的,而且直接可以知道究竟哪一步就已经是假的。
再想象一下,有一个变量是json.a.b.c,其中的a/b/c都可能是存在的也可能是不存在的,全看具体情况,这时候你简单的写if (json.a.b.c === 2) {...}是不行的,因为json.a.b就可能已经是非法的,所以你如果用if,就要考虑a是不是非法的、a是合法前提下b是不是非法的,b是合法前提下c是不是非法的。但是json.a.b.c === 2在try中就可以直接写,也就是说,我不关心究竟a/b/c谁是非法的,我只关心json.a.b.c到底是不是等于2,不等于2或者任何一步出错,对我来讲没有区别,反正都是不等于2,我不关心哪步出错,而且程序不会坏掉。这是一种比较省心的写法。
      另外注意,try catch不能做真假判断,只能做非法判断。也就是说:try {1 === 2},虽然1===2是假,但是是合法的,catch不会捕捉到错误,也不会告诉你1 === 2到底是真是假。所以,写在try里的应该是json.a.b.c而不是json.a.b.c === 2。究竟是不是等于2,是后面的事,是if干的事。简单说,try catch用于捕捉报错,当你不关心哪一步错误,只关心有没有错,就用try catch。

try {   window.a.b !== 2}catch(err){     alert(err) // 可执行     alert(123) // 可执行}if (window.a.b !== 2) {    alert("error") // 不执行}alert(123); // 不执行

     最后,try catch在早期被各种语言的程序员滥用,try catch出现的场合被夸大了,事实上没那么多适用场合。如果你的几千行程序都没用到try catch也是很正常的,尤其是用了jquery。

 

 

 

.

转载于:https://www.cnblogs.com/jianxian/p/11107186.html

你可能感兴趣的文章
Bundle类
查看>>
内网机连外网教程
查看>>
前阿里运营的电商运营总结
查看>>
A计划
查看>>
CUDA学习5 常量内存与纹理内存
查看>>
控制反转-依赖注入
查看>>
做热风焊盘时老是提示错误: ERROR - Could Not Generate Shape
查看>>
(水题)洛谷 - P1149 - 火柴棒等式
查看>>
Codeforces - 346A - Alice and Bob - 简单数论
查看>>
模板 - 图论 - 单源最短路
查看>>
Java http请求和调用
查看>>
基于 Token 的身份验证
查看>>
Moment.js
查看>>
转----秒杀多线程第十篇 生产者消费者问题
查看>>
Linux 命令 - ln
查看>>
UNP Chapter 12 - 守护进程和inetd超级服务器
查看>>
数据库变成可疑状态
查看>>
codeforces B. Valera and Contest 解题报告
查看>>
JavaScript—赋值表达式
查看>>
笔记本Ctrl键突然失灵是什么原因?
查看>>