首页 > 语言 > JavaScript > 正文

JavaScript错误处理操作实例详解

2024-05-06 15:43:34
字体:
来源:转载
供稿:网友

本文实例讲述了JavaScript错误处理操作。分享给大家供大家参考,具体如下:

良好的错误处理机制可以让用户得到及时的提醒,所以让我们来看看 JavaScript 提供了哪些针对错误处理的工具和方法吧O(∩_∩)O~

1 try-catch 语句

ECMA-262 第 3 版引入了 try-catch 语句,这时 JavaScript 处理异常的标准方式:

try{  //可能会导致错误的代码} catch (error){  //错误处理}

如果 try 块中的代码发生了错误,会立即执行 catch 块的代码。 catch 块有一个包含错误信息的对象,它有一个 message 属性,表示的是浏览器给出的错误消息:

<script type="text/javascript">  try {    window.someNonexistenceFunction();  } catch (error) {    console.log(error.message);  }</script>

message 属性是所有的浏览器都支持的属性,所以在跨浏览器编程中,最好只使用这个属性。

1.1 finally 子句

finally 子句是可选的,如果使用了 finally 子句,里面包含的代码是绝对会被执行的!甚至连 return 语句都无法阻止它被执行:

<script type="text/javascript">  function testFinally() {    try {      return 2;    } catch (error) {      return 1;    } finally {      return 0;    }  }  console.log(testFinally());//0</script>

IE7 及更早的版本有一个 bug:除非有 catch 子句,否则 finally 中的代码永远不会被执行!IE8 修复了这个 bug。

注意:只要在代码中使用了 finally 子句,那么不管 return 放在 try 还是 catch 语句中,都会被忽略!

1.2 错误类型

当错误发生时,会抛出相应类型的错误对象。ECMA-262 定义了 7 种错误类型:

Error EvalError RangeError ReferenceError SyntaxError TypeError URIError

1.2.1 Error

Error 是基类型,即其他的错误类型都是从 Error 继承来的。可以利用 Error 来自定义错误类型。

1.2.2 EvalError

EvalError 是在使用 eval() 函数发生异常时被抛出。怎么才算是异常呢?如果没有把 eval() 当作函数来使用,就会抛出 EvalError:

new eval();//抛出 EvalErroreval = foo;//抛出 EvalError

实际开发中很少这样使用 eval() 函数的(除非脑袋秀逗了O(∩_∩)O~),所以很少会遇到 EvalError。

1.2.3 RangeError

RangeError 会在数值超出规定范围时被抛出。比如在定义数组时,指定了数组不支持的数组项数,就会抛出这个错误:

var item1 = new Array(-20);//抛出 RangeErrorvar item1 = new Array(Number.MAX_VALUE);//抛出 RangeError

1.2.4 ReferenceError

找不到对象时,会抛出 ReferenceError(这就是浏览器的知名的 “object expected” 错误)。一般在访问不存在的变量时,会抛出这个错误:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选