错误处理 为什么要进行错误处理 如果不处理,程序运行就会终止 怎么捕获错误 try ... catch ... finally 错误类型 JavaScript有一个标准的Error对象表示错误,还有从Error派生的TypeError、ReferenceError等错误对象。 怎么处理error 我们在处理错误时,可以通过catch(e)捕获的变量e访问错误对象 使用变量e是一个习惯用法,也可以以其他变量名命名,如catch(ex) 抛出错误 程序也可以主动抛出一个错误,让执行流程直接跳转到catch块。抛出错误使用throw语句 实际上,JavaScript允许抛出任意对象,包括数字、字符串。但是,最好还是抛出一个Error对象。 错误传播 如果在一个函数内部发生了错误,它自身没有捕获,错误就会被抛到外层调用函数,如果外层函数也没有捕获,该错误会一直沿着函数调用链向上抛出,直到被JavaScript引擎捕获,代码终止执行。 同步错误处理(使用try..catch): 同步的特性是:从上到下执行代码 页面加载时从head开始加载的,js也是head中的js先执行 异步错误处理 在捕获的当时,回调函数并未执行,所以无法在调用时捕获 编写JavaScript代码时,我们要时刻牢记,JavaScript引擎是一个事件驱动的执行引擎,代码总是以单线程执行,而回调函数的执行需要等到下一个满足条件的事件出现后,才会被执行。 涉及到异步代码,无法在调用时捕获,因为调用函数执行时,回调函数未执行,回调函数执行时,调用函数早就执行完了,不再捕获异常了 异常可以是 JavaScript 字符串、数字、逻辑值或对象。 try{ var input =document.querySelector("#text1").value; console.log("input="+input) if(input=="") throw "值为空"; if(isNaN(input)) throw "不是数字"; if(input>10) throw "太大"; if(input<5) throw "太小"; }catch(err){ p.innerHTML="错误:"+err+"!"; }