开发过程中,编程错误大致分为:语法错误、逻辑错误和运行时错误。语法错误通常发生在编译或解释阶段,它们很容易被编译器或解释器捕获。逻辑错误多是人为,只能尽可能避免。最棘手的是运行时错误,有很大的不可预知性,需要适当采取合理的措施,以免发生严重后果,将各方损失降到最低。
顾名思义,错误处理是一种处理运行时发生的错误或异常的策略。
JavaScript中,支持使用“try…catch”处理运行时错误,有可能含有错误的代码段放在try块中,如果发生异常/错误,程序会转移至catch块。
try{
// 可能包括异常/错误的正常流程代码,
}
catch(e){
// 处理异常/错误
}实例
用JSON.parse()把一个字符串解析成JSON对象。
var value = '{a: b';
try {
var v = JSON.parse(value);
console.log('v:', v);
}
catch (e) {
console.error(e);
}
由于value结构不满足JSON对象要求,无法成功解析。
catch块有一个代表异常对象的参数,可用于帮助开发人员定位问题。
在一些特定情况下,无论是否有异常,都需要清除或释放脚本在程序执行期间占用的资源,这就用到finally块。
try{
// 可能包括异常/错误的正常流程代码,
}
catch(e){
// 处理异常/错误
}
finally{
// 必定执行
}在上方实例中加入finally块,执行下一个任务:
var value = '{a: b';
try {
var v = JSON.parse(value);
console.log('v:', v);
}
catch (e) {
console.error(e);
}
finally {
console.log("NEXT TASK");
}此外,JavaScript还支持借助throw关键字创建用户定义的异常。
var value = '{"a": 1}';
try {
var v = JSON.parse(value);
if (v.a != 2) {
throw 'not 2';
}
}
catch (e) {
console.error(e);
}throw抛出异常,可以是字符串、数字、逻辑值或对象。