错误处理
try-catch语句
try{
// 可能会导致错误的代码
} catch(error){
// 在错误发生时怎么处理
alert(error.message);
}
这个例子在向用户显示错误消息时,使用了错误对象的 message 属性。
只要代码中包含 finally 子句,那么无论 try 还是 catch 语句块中的 return 语句都将被忽略。
错误类型
Error 是基类型,其他错误类型都继承自该类型。
RangeError 类型的错误会在数值超出相应范围时触发。
ReferenceError 在找不到对象的情况下,通常,在访问不存在的变量时,就会发生这种错误。
URIError 在使用 encodeURI() 或 decodeURI(),而 URI 格式不正确时,就会导致 URIError 错误
try {
someFunction();
} catch (error){
if (error instanceof TypeError){
//处理类型错误
} else if (error instanceof ReferenceError){
//处理引用错误
} else {
//处理其他类型的错误
}
}
错误(error)事件
任何没有通过 try-catch 处理的错误都会触发 window 对象的 error 事件。这个事件是 Web 浏览器最早支持的事件之一。只要发生错误,无论是不是浏览器生成的,都会触发 error 事件,并执行这个事件处理程序。然后,浏览器默认的机制发挥作用,像往常一样显示出错误消息。像下面这样在事件处理程序中返回false,可以阻止浏览器报告错误的默认行为。
window.onerror = function(message,url,line){
alert(message);
return false;
};
图像也支持 error 事件。只要图像的 src 特性中的 URL 不能返回可以被识别的图像格式,就会触发 error 事件。此时的 error 事件遵循 DOM 格式,会返回一个以图像为目标的 event 对象。下面是一个例子。
var image = new Image();
EventUtil.addHandler(image,"load",function(event){
alert("Image loaded!");
});
EventUtil.addHandler(image,"error",function(event){
alert("Image not loaded!");
});
image.src = "smilex.gif"; //指定不存在的文件