在实际应用中,碰到了一个问题,就是在动态生成一个表格的时候,从后台接收到的的数据和表头名称是不同的接口,而表格的id是在表头名称这个接口动态生成的,所以就会导致一个问题,在火狐浏览器中,响应请求比较慢
这个时候我们就可以使用 try catch 方法 来 处理浏览器的位置错误

下面是相对简单的例子:

try {foo.bar();
} catch (e) {if (e instanceof EvalError) {alert(e.name + ":" + e.message);} else if (e instanceof RangeError) {alert(e.name + ": " + e.message);} // etc
}

关于错误 e 的主要属性 :

description: 错误描述 (仅IE可用).
fileName: 出错的文件名 (仅Mozilla可用).
lineNumber: 出错的行数 (仅Mozilla可用).
message: 错误信息 (在IE下同description)
name: 错误类型.
number: 错误代码 (仅IE可用).
stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).

关于 try 的一些 应用场景

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 catch 用法相关推荐

  1. try 和 catch 用法

    try 和 catch 用法 参考文档 MDN | try-catch 作用: 使用 try-catch 来将可能出现错误的代码进行包裹. try 用来包裹可能出现错误的代码:如果 try 中的代码出 ...

  2. try catch用法_synchronized用法总结

    synchronized :java内置关键字,被保存在对象头中,而一个对象则是由对象头.实例数据.对其填充三部分组成. 很多时候大家伙都惯性地将synchronized称为一个重量级锁,理由是syn ...

  3. java catch用法_java – 如何避免使用try … catch块

    我理解这些是必要的--当然要编写正确的代码,但是有没有一种设计模式可以帮助避免在类中重复尝试- catch块?例如,我编写了一个抛出5个不同异常的特定类. public void iterateCom ...

  4. PHP try catch用法

    function ActionSend($mobile, $key='') {      try  {   if (empty($key)) {    throw new Exception('key ...

  5. 关于js 中 try catch用法

    try-catch语法,简单来说就是用来捕获异常的,我就简述一下我遇到的问题 当使用vuex在actions发请求时,这个接口不仅可以添加购物车数据,同时也可更新产品的数量,我就在更新产品数量的地方出 ...

  6. js 中try catch用法

    try{//正常执行的代码 //如果出错,抛出错误 }catch(err){//处理错误 } 运行流程: try{-}包含块中的代码有错误,则运行catch(err){-}内的代码, 否则不运行cat ...

  7. c# try catch 用法

    try catch finally 1.将预见可能引发异常的代码包含在try语句块中. 2.如果发生了异常,则转入catch的执行.catch有几种写法: catch 这将捕获任何发生的异常. cat ...

  8. try/catch 用法

    try : 在执行时进行错误测试的代码块. catch : 当 try 代码块发生错误时,所执行的代码块. try {可能会有错误的代码 } catch(err){如果try内的代码有错误,就会进入c ...

  9. try catch用法理解

    1.try catch 捕捉不到fatal error致命错误 2.只有抛出异常才能被截获,如果异常抛出了却没有被捕捉到,就会产生一个fatal error 3.父类可以捕获子类抛出的异常 复制代码 ...

最新文章

  1. 学习Web前端需要避免哪些错误
  2. python趣味编程100_《Python游戏趣味编程》 第8章 勇闯地下一百层
  3. JNI线程、Linux常用命令、权限、防火墙配置
  4. VTK:将点转换为字形用法实战
  5. 云服务器带宽如何计算,云服务器怎么选择带宽
  6. 学习《css世界》笔记之使用overflow做文字溢出点点点效果
  7. (一)Neo4j在Centos7虚拟机上的安装
  8. check-lxdialog.sh: line 3: $'\r': command not found
  9. pin码计算器网页版_AP微积分Excel简便计算+网页工具指南
  10. 知乎_线程和进程的区别是什么?
  11. 基于javaweb+JSP+Servlet火车票网上订票系统(前台、后台)
  12. python爬取文字和图片_Selenium_Chrome爬取文本和百度图片
  13. Poco库完全使用手册
  14. 中台是什么,到底要解决什么问题?
  15. ar和nm命令的使用
  16. 数学建模——核军备竞赛
  17. php判断汉子首字母的函数,php获取汉字首字母的函数
  18. 11月开展消防宣传活动
  19. 今天goCom财政赤字了
  20. Dagger2使用解析

热门文章

  1. 机器学习之决策树算法前期(创建、分类及展示)
  2. Python3——斐波那契数列
  3. 11 月中国手游海外收入排行:米哈游《原神》第一,《使命召唤手游》第二
  4. 共享单车背后还隐藏着多少惊天秘密?
  5. 45.帧缓冲设备(Framebuffer),LCD
  6. 关于外国人报考美国专利代理人的基础介绍
  7. 晏几道 天涯 青砚1989
  8. PDF编辑方法,PDF文件怎么修改内容
  9. 如何修改pdf文件内容并保存
  10. maven-jar包的来源