JavaScript之处理异常

一个程序通常有3种类型的异常,分别为“语法异常”、“运行时的异常”和“逻辑异常”,其中“语法异常”通常是在程序员输入一些编译器无法识别的代码后发生的;“运行时的异常”通常是在运行时碰到一个错误时发生的,它与“语法异常”的区别在于它不一定是JavaScript语言的错误引发的异常;“逻辑异常”往往发生在程序设计时,程序没有按照预先设计的方式运行。

触发onerror事件是最早用于处理JavaScript异常的机制,页面出现异常时,将触发onerror事件,该事件在window对象上触发。

<script language="javascript">

window.onerror=function(){ alert("您调用的函数不存在"); return true; }

</script>

参数说明: window.onerror:触发onerror事件。 除了window对象可以触发onerror事件之外,图像对象也可以触发onerror事件。

<script language="javascript">

document.images[0].onerror=function(){ somestatements; return true; }

</script>

参数说明: document.images[0]:页面中的第一个图像。

使用onerror事件处理异常除了可以捕捉异常之外,还可以提供如下3种信息来确定发生异常的详细信息。

异常信息:获取异常信息。

URL:获取发生异常的文件的绝对路径。

行号:给定发生异常文件的行号。

<script language="javascript">

window.onerror=function(ms,Url,Line){ alert("您调用的函数不存在\n"+ms+"\n"+Url+"\n"+Line+"\n"); return true; }

</script>

参数说明: window.onerror:window对象触发onerror事件。

使用try…catch语句处理异常:

JavaScript中从Java语言中引入了try...catch...finally功能,具体语法如下。

<script language="javascript">

try{

     somestatements; }

catch(exception e){

    somestatements; }

finally{ somestatements; }

</script>

参数说明: try:捕捉异常关键字。 catch:捕捉异常关键字。 finally:最终一定会被处理的区块的关键字。

1.嵌套try...catch语句 如果在catch区域中也发生了异常,可以在catch区域中再使用一组try...catch语句,即嵌套使用try...catch语句。

<script language="javascript">

try{

         somestatements; }

catch(exception){

         try{ somestatments; }

        catch(exception){

              somestatments; } }

               finally{ somestatements; }

</script>

参数说明: try:捕捉异常关键字。 catch:捕捉异常关键字。 finally:最终一定会被处理的区块的关键字。

2.Error对象 try...catch...finally语句中catch通常捕捉到的对象为Error对象,Error类是所有用于抛出异常的类的基类,类似于Java语言中的用于抛出异常的基类Exception类,JavaScript中用于抛出异常的类如表所示。

                                                     JavaScript中用于抛出异常的类

  类                                                      发生异常的原因

EvalError                               错误发生在eval()函数中

RangeError                            数字的值超出了JavaScript可表示的范围

ReferenceError                       使用了非法的引用

TypeError                              变量的类型错误

URIError                               在encodeURI()函数或者decodeURI()函数中发生错误

 

Error对象有以下两个特性: name:表示异常类型的字符串。 message:实际的异常信息。

3.使用throw语句抛出异常

在程序中使用throw语句可以有目的的抛出异常。

<script language="javascript">

  throw new Error("somestatements");

</script>

参数说明: throw:抛出异常关键字。 也可以使用throw语句抛出Error对象子类的对象。

<script language="javascript">

  throw new TypeError("somestatements");

</script>

 

posted @ 2016-03-06 21:40  麒麟阁  阅读(239)  评论(0编辑  收藏  举报