JavaScript中的Error对象及其异常的用法

来源:互联网 发布:2017网络洗脑神曲 编辑:程序博客网 时间:2024/06/07 18:49

一、定义     

         在JavaScript中Error类表示一个异常,是其他异常类的父类,构造一个Error类的基本语法为:

                objError = new Error(message);

         Error对象具有name和message两个属性,name表示异常的类型,message表示异常详细信息字符串

         JavaScript还预定义了其他一些异常类,这些类都是Error类的子类,如下:

                 1.EvalError   //当不正确使用eval函数时,会抛出EvalError类的一个实例

                 2.RangeError   //当数值超出JavaScript中合法的数值范围时,会抛出RangeError类的一个实例

                 3.ReferenceError  //当读取一个不存在的变量的值时,会抛出ReferenceError类的一个实例

                 4.SyntaxError   //当JavaScript中出现语法错误时,会抛出SyntaxError类的一个实例

                 5.TypeError   //当JavaScript中类型不符合要求时,会抛出TypeError类的一个实例

                 6.URIError    //当字符串不符合编码或解码要求时,会抛出URIError类的一个实例

二、用法

             为了说明如何在JavaScript中使用异常机制,我来用代码说明,这样会更加清晰:

           function testEval(){    //定义函数testEval()

                 try{

                      var exp = prompt("请输入一个表达式","");

                      var result = eval(exp);            //eval()函数是用来执行exp表达式的

                 }catch(error){               //这里catch里面的只能是error,也成Error是错误的

                      throw new Error("对不起,您输入的表达式不合法!");

                 }

                 document.write("表达式的值为: "+result+"<br/>")

           }

 

JavaScriptError对象

JavaScriptError对象是保存有关错误的信息。使用方法: 

var newErrorObj = new Error(
  
)
var newErrorObj = new Error(
   number
)
var newErrorObj = new Error(
   number,
   description
)

JavaScriptError对象的构造函数语法有以下部分:
其中number是与错误相联的数字值。如果省略则为零。
description
是描述错误的简短字符串。如果省略则为空字符串。

每当产生运行时错误,就产生Error 对象的一个实例以描述错误。该实例有两个固有属性保存错误的描述(description 属性)和错误号(number 属性)。

错误号是32 位的值。高16 位字是设备代码,而低字是实际的错误代码。

Error 
对象也可以用如上所示的语法显式创建,或用throw 语句抛掉。在两种情况下,都可以添加选择的任何属性,以拓展Error 对象的能力。

典型地,在try...catch 语句中创建的局部变量引用隐式创建的Error 对象。因此,可以按选择的任何方法使用错误号和描述。

下面的例子演示了隐式创建Error 对象的使用: 

try
{ x = y                         // 
产生错误。
}catch(e){                      // 
创建局部变量e
   response.write(e)                // 
打印"[object Error]".
   response.write(e.number & 0xFFFF)   // 
打印5009
   response.write(e.description)    // 
打印"'y' is undefined".
}