错误处理机制
2020-11-05 16:55:14
实例对象:Error构造函数,错误中断,抛出异常
- 三个属性:name【错误名字】
message【错误信息提示】
stack【错误堆栈】 - 使用:名字+.+属性(a.message)
-
try{
尝试执行的代码块
}catch(err){
捕获错误的代码块
}finally{
无论结果如何都会执行的代码块,可省
}


【下面】
六大错误类型:6个派生对象
- SyntaxError对象:语法错误
- ReferenceError对象:引用了不存在变量
- RangeError对象:值超出有效范围
- TypeError对象:变量值不是预期类型
如对字符串数值等直接new【new 123】,new命令应该是一个构造函数 - URIError对象:相关参数不正确抛出的错误
- EvalError对象:没有正确执行函数,已经停止使用
六个派生对象+Error对象都是构造函数,可以手动生成对象实例;
var err1 = new Error('出错了!'); var err2 = new RangeError('出错了,变量超出有效范围!'); var err3 = new TypeError('出错了,变量类型无效!'); err1.message // "出错了!" err2.message // "出错了,变量超出有效范围!" err3.message // "出错了,变量类型无效!"
自定义错误对象(prototype)略
throw语句:手动中断程序执行,抛出一个错误
可以抛出任何类型值,参数是任何值
// 抛出一个字符串 throw 'Error!'; // Uncaught Error! // 抛出一个数值 throw 42; // Uncaught 42 // 抛出一个布尔值 throw true; // Uncaught true // 抛出一个对象 throw { toString: function () { return 'Error!'; } }; // Uncaught {toString: ƒ}
try...catch结构:允许对错误进行处理,选择是否往下执行
try {
f();
throw "出错了";
} catch(e) {
// 处理错误
console.log(e.name+e.message+e.stack)
}
finally代码块:不管是不是最后都放在最后
try { writeFile(Data); } catch(e) { handleError(e); } finally { closeFile(); }
先try,有错执行catch后再finally;
没错执行finally
你的代码量决定了你的薪资水平!
浙公网安备 33010602011771号