JavaScript高级程序设计 错误处理与调试学习笔记
2024-05-06 14:23:40
供稿:网友
第十四章 错误处理与调试
1.开启浏览器错误报告
1.1 Internet Explorer
□Toos → Internet Option → Anvanced → Display a notification about every script error
1.2 Firefox
□Tools → Error Console (Firebug)
1.3 Safari
□Edit → Preferences → Advanced → Show develop menu in menubar/Develop → Show Error Console
1.4 Opera
□Tools → Advanced → Error Console
1.5 Chrome
□Control this page → Developer → JavaScript console
2.错误处理
2.1 Try-catch语句
try{
//可能会导致错误的代码
}catch(error){
//错误发生时怎么处理
}
□错误发生时catch快回收到一个包含错误信息的对象。有一个兼容所有浏览器的message属性。
2.1.1 finally子句
try-catch子句可选,finally子句一经使用,其代码无论如何都会执行。
2.1.2 错误类型
□Error:基类型。主要目的是供开发人员抛出自定义错误。
□EvalError:用eval()函数发生异常时抛出。
□RangeError:数值超出相应范围时触发。
□ReferenceError:找不到对象的情况下
□SyntaxError:把语法错误的JavaScript字符串传入eval()函数。
□TypeError:变量中保存着意外的类型时,或访问不存在的方法时。
□URIError:使用encodeURI()或decodeURI(),而URI格式不正确时。
根据不同的错误类型,进行错误处理:
try{
soemFunction();
}catch(error){
if(error instanceof TypeError){
//处理类型错误
}else if(error instanceof ReferenceError){
//处理引用错误
}else{
//处理其他类型错误
}
}
2.1.3 善用try-catch
□使用try-catch语句,浏览器会认为错误已经被处理。
□使用try-catch语句,最适用吹那些我们无法控制的错误。
□明明白白地知道自己代码发生错误就不该用try-catch而是修复错误。
2.2 抛出错误
①与try-catch语句相配有一个throw操作符。在遇到throw操作符时,代码立即停止执行。仅当有try-catch语句捕获到被抛出的值时,代码才会继续执行。
②throw new Error("something bad happened."); 或利用原型链通过继承Error来创建自定义错误类型。
2.2.1 抛出错误的时机
2.2.2 抛出错误与使用try-catch
2.2.3 错误(error)事件
①任何没有通过try-catch处理的错误都会触发window对象的error事件。
②任何浏览器中,onerror事件处理程序都不会创建event对象。但可接受3个参数:错误消息、错误所在的URL和行号。(只有错误消息有用)
③指定onerror事件处理程序,必须使用DOM0级技术。
window.onerror = function(message,url,line){
alert(message);
return false; //通过返回false,此函数实际上充当了整个文档的try-catch语句可捕获所有无代码处理的运行时错误。
};
④图像也支持error事件。只要图像的src特性中URL不能返回可以被识别的图像格式,就会触发error事件。此时的error事件遵循DOM格式,会返回一个以图像为目标的event对象。