`

javascript中的异常处理

    博客分类:
  • js
 
阅读更多

javascript中的异常处理
异常处理概述
在代码的运行过程中,错误是不可避免的,总的来说,错误发生于两种情况:一是程序内部的逻辑或者语法错误,二是运行环境或者用户输入中不可预知的数据造成的错误。对于前者,就称之为错误(error),可以通过调试程序来解决;而后一种则更多的称之为异常(exception),顾名思义,就是超出常规,没有按程序设计的意愿来输入数据。当然,异常还会有许多种类型。
所以说,异常并不等价于错误,相反,有时还会利用异常来解决一些问题。JavaScript可以捕获一个异常并进行相应的处理,从而避免了浏览器向用户报错。

使用try-catch-finally处理异常
用户可以使用该结构处理可能发生异常的代码,如果发生异常,则由catch捕获并进行处理,其语法如下:


try{ 
       //要执行的代码 

catch(e){ 
       //处理异常的代码 

finally{ 
       //无论异常发生与否,都会执行的代码 
}
通过异常处理,可以避免程序停止运行,从而具有了一定的自我修复能力。
在Ajax开发中,利用异常处理的一个典型应用就是创建XMLHttpRequest对象,不同浏览器创建它的方式是不一样的,为了使代码能够跨浏览器运行,就可以利用异常,一种方法不行,再用另一种方法,直到不发生异常为止,例如:

<script language="JavaScript" type="text/javascript"> 
<!-- 
var xmlhttp; 
try{ 
      //尝试用IE浏览器的方式创建XMLHttpRequest对象 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
}catch(e){ 
      try{ 
           //尝试用非IE浏览器的方式常见XMLHttpRequest对象 
           xmlhttp=new XMLHttpRequest(); 
      }catch(e){} 

//--> 
</script>
通过这种方式,就可以跨浏览器创建XMLHttpRequest对象。注意,即使不在catch块内进行处理,catch标识及其参数e也是必须写的,否则会产生语法错误,而finnally则不是必须的。
使用throw语句抛出异常
在JavaScript中有其内部的异常机制,在遇到非法操作时能自动抛出异常。实际的开发中,随着程序的复杂,需要能自己实现异常,这可以通过throw语句来实现:
throw value;
其中value就是要抛出的异常变量,它可以是JavaScript中的任何一种类型。但在JavaScript内部的异常中,异常参数(即catch(e)中的e)是一个名为error的对象,可以通过new Error(message)来创建这个对象,异常的描述被作为error对象的一个属性message,可以由构造函数传入,也可以之后赋值。通过这个异常描述message,可以让程序获取异常的详细信息,从而自动处理。
下面的程序计算两个数据的和,如果参数不是数字,则抛出异常,代码如下:

<script language="JavaScript" type="text/javascript"> 
<!-- 
//函数默认要求参数为数字 
function sum(a,b){ 
      a=parseInt(a); 
      b=parseInt(b); 
      //如果a或b不能转换为数字则抛出一个异常对象 
      if(isNaN(a) || isNaN(b)){ 
              throw new Error("arguments are not numbers"); 
      } 
      return a+b; 


try{ 
      //错误的调用 
      var s=sum("c","d"); 
}catch(e){ 
      //显示异常的详细信息 
      alert(e.message); 

//--> 
</script>
程序中使用字母作为参数传递给sum函数,是错误的,所以函数内抛出了一个异常对象,这个对象被catch语句获取,并使用alert语句显示了其详细信息。
注意:使用new Error(message)创建异常对象只是一种默认的习惯,也是内置异常的实现方式。这不是必需的,完全可以抛出任意数据类型的异常,例如一个整数,来作为异常的描述。只要在程序中抛出异常和捕获异常能匹配即可。

Error对象除了message属性以外,还有一些其他的属性,这些属性因浏览器而异,例如:在IE浏览器中,error对象的属性包括name、number、description、message;而在Firefox浏览器中,error对象的属性包括message、fileName、lineNumber、stack、name。在实际的应用中如果要实现自己的异常,这些属性只要被赋值,都是可用的,其中Firefox浏览器还会自动对stack属性赋值,用于显示异常出现的位置。

分享到:
评论

相关推荐

    javaScript异常处理文档

    javaScript异常处理文档,当遇到JavaScript等异常问题时可翻阅本文档寻找答案

    javascript中异常处理案例(推荐)

    下面小编就为大家带来一篇javascript中异常处理案例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    JavaScript异常处理

    JavaScript 异常处理 异常处理概述 在代码的运行过程中,错误是不可避免的,总的来说,错误发生于两种情况:一是程序内部的 逻辑或者语法错误,二是运行环境或者用户输入中不可预知的数据造成的错误。对于前者,就称...

    JavaScript 处理异常的方法

    JavaScript 处理异常的方法

    javascript编程异常处理实例小结

    前言:在前一篇《asp.net开发中常见公共捕获异常方式总结》,我们整理总结了asp.net服务端的异常处理。这一篇接着前文,简单总结并讨论一下javascript在客户端的异常处理。这样asp.net的服务端和客户端异常处理我们...

    javascript 异常处理使用总结

    JavaScript中的异常可以用try..catch..finally语句来处理,也可以手动的来抛出异常。 1.使用try..catch..finally语句来处理异常 js代码在执行过程中如果出现异常,会手动创建一个异常类对象,该异常类对象将被提交给...

    JavaScript错误与异常处理

    JavaScript中的错误可以分为语法错误和运行错误。语法错误一般简称为错误(Error),而运行错误一般也叫做异常(Exception)。错误和异常同属于错误,但是也有着本质的区别。下面将分别予以介绍,并分析它们之间的异同...

    前端开发、JavaScript、asyncawait、异步编程、异常处理,学习JavaScript异步编程

    同时,异步编程中的异常处理也得到了很好的支持,我们可以在async函数中使用try-catch语句来处理异常情况,增强了代码的健壮性和可维护性。 适用人群:本文适用于Web前端开发人员、JavaScript初学者以及对异步编程...

    详解JavaScript中的异常处理方法

    当一个语法错误在JavaScript中出现,只有在同一个线程中包含的语法错误的影响,在其他线程的代码被执行;代码依赖于包含错误的代码不会被执行。 运行时错误: 执行(编译/解释后)在运行时错误,也被称为异常,会引发...

    浅谈JavaScript异常处理语句

    运行时的错误统称为异常,为了能在错误发生时得到一个处理的机会,JavaScript提供了异常处理语句。包含try-catch、try-catch-finally和throw. try-catch语句 try{ tryStatements } catch(exception){ ...

    reactnative异常处理库

    react-native模块,让您注册一个全局错误处理程序,可以捕获致命/非致命的未捕获异常

    JavaScript学习笔记包括正则表达式、异常处理、调试、关键字等

    JavaScript学习笔记包括正则表达式、异常处理、调试、关键字等

    23_异常处理_JavaScript模块化(1)1

    23_异常处理_JavaScript模块化(1)1

    JavaScript 异常处理 详解

    前端工程师都知道 JavaScript 有基本的异常处理能力。我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常。但估计绝大多数前端工程师都没考虑过收集这些异常信息 反正只要 JavaScript 出错后刷新...

    JavaScript宝典(第7版)( (美)Danny Goodman) 高清中文扫描版.pdf

    《javascript宝典(第7版)》内容简介:您想创建更具魅力的交互网页吗?...应用最新的javascript异常处理和自定义对象技术 利用dom的强大功能 使用ajax、e4x/xml利json推动web2.0应用 执行数据输入验证和提高安全性

    javascript完全学习手册1 源码

    13.3 异常处理 374 13.3.1 异常类型 374 13.3.2 触发onError事件处理异常 375 13.3.3 使用try...catch语句处理 异常 377 13.3.4 Error对象 379 13.3.5 使用throw语句 380 13.4 JavaScript调试技巧 381 13.4.1 使用...

    javascript异常处理实现原理详解

    这篇文章主要介绍了javascript异常处理实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一、什么是例外处理 当 JavaScript程序在运行中发生了诸如...

Global site tag (gtag.js) - Google Analytics