错误类型
JavaScript 解析或运行时,一旦发生错误,引擎就会抛出一个错误对象
SyntaxError
是解析代码时发生的语法错误
ReferenceError
ReferenceError对象是引用一个不存在的变量时发生的错误。
另一种触发场景是,将一个值分配给无法分配的对象,比如对函数的运行结果或者this赋值。
RangeError
RangeError对象是一个值超出有效范围时发生的错误。
TypeError对象是变量或参数不是预期类型时发生的错误。
throw语句
throw语句的作用是手动中断程序执行,抛出一个错误。
遇见大错就中断,不往下执行
new Error是一个对象,可以创建规则.在控制台显示
var x=-1
if (x < 0) {
throw new Error('x 必须为正数');
}
//uncaught Error : x 必须为正数
console.log(1) //遇见抛出的错误下面的代码也不会运行
// 抛出一个字符串
throw 'Error!';
// Uncaught Error!
// 抛出一个数值
throw 42;
// Uncaught 42
// 抛出一个布尔值
throw true;
// Uncaught true
// 抛出一个对象
throw {
toString: function () {
return 'Error!';
}
};
// Uncaught {toString: ƒ}
try..catch
一旦发生错误,程序就中止执行了。
JavaScript 提供了try...catch结构,允许对错误进行处理,选择是否往下执行。
可以用来尝试自己写的代码是否有错误 跟if规矩一样
try {
//想判断的代码
}catch(e){
console.log(e.message);
//如果不出错就不会执行catch,如果出错就会执行catch,把错误
//的存储带参数里,message是错误的一个属性,代表着错误的信息
}
try代码块抛出错误,JavaScript 引擎就立即把代码的执行,转到catch代码
块,或者说错误被catch代码块捕获了。catch接受一个参数,表示try代码块抛出的值。
inally
try...catch结构允许在最后添加一个finally代码块,
表示不管是否出现错误,都必需在最后运行的语句。
function f(){
try{
console.log(0)
throw 'bug'
}catch(e){
console.log(1)
return true
console.log(2)
}finally{
console.log(3)
return false
console.log(4)
}
console.log(5)
}
f()
console.log(f()) //0,1,3