当前位置:编程学习 > JAVA >>

[JavaScript]错误处理

1. try-catch
ECMA-262第3版引入了try-catch语句,基本的语法如下所示:
try { 
 
catch(error) { 
 
如果try块中的任何代码发生错误,就会立即执行catch块。此时,catch块会接收到一个包含错误信息的对象。即使不使用这个错误对象,也要起个名字,对象中包含的实际信息因浏览器而异,但共同的是一个保存错误消息的message属性,ECMA-262还规定了一个保存错误类型的name属性,所有浏览器都支持这个属性(Opera 9之前的版本除外)。
 
2. finally
虽然在try-catch块中是可选的,但finally子句一经用,无论如何都会执行,甚至return语句都不会阻止,例如:
function test() { 
  try { 
    return 1; 
  } 
  catch(error) { 
    return 2; 
  } 
  finally { 
    return 3; 
  } 
 
3. 错误类型
每种错误都有对应的错误类型,而当错误发生时,就会抛出相应类型的错误对象,ECMA-262定义了7种错误类型:
1) Error: 基类型。
2) EvalError: 使用eval()函数发生异常时抛出。
3) RangeError: 数值超出相应范围时抛出。
4) ReferenceError: 找不到对象时抛出。
5) SyntaxError: 使用eval()函数中的字符串有语法错误时抛出。
6) TypeError: 在变量中保存意外类型或访问不存在的方法时抛出。
7) URIError: 使用encodeURI或decodeURI()中URI格式不正确时抛出。
 
4. 抛出错误
与try-catch相配的还有一个throw操作符,用于抛出自定义错误。抛出错误时,必须给throw操作符指定一个值,这个值的类型没有要求,例如:
throw 123; 
throw "Hello World!"; 
在遇到throw操作符时,代码会立即停止执行。
 
5. 错误事件
没有通过try-catch处理的错误都会触发window对象的error事件。任何浏览器中,onerror事件处理程序都不会创建event对象,但它可以接受3个参数:错误消息、错误所在的URL和行号。只要发生错误,无论是不是浏览器生成的,都会触发error事件,并执行这个事件处理程序,如果在事件处理程序中返回false,可以阻止浏览器报告错误的默认行为,例如:
window.onerror = function(message, url, line) { 
  alert(message); 
  return false; 
图像也支持error事件,只要图像的src属性中的URL不能返回可以被识别的图像格式,就会触发error事件。
 
补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,