异常
抛出异常类型
-
number/string/boolean
-
对象,如 throw new Error(‘xxx’)
函数中throw抛出异常后,后续的代码不会执行
捕获异常
函数中throw抛出异常后,没有对异常进行捕获,异常会传递到上一个调用函数中,直到全局代码中。
若全局依然没有对异常捕获,则报错并且终止程序运行。
function foo1() {
console.log('foo1 start');
console.log('foo1');
console.log('foo1 end');
}
function foo2() {
console.log('foo2 start');
console.log('foo2');
try {
console.log('try');
foo1()
} catch (error) {
console.log(error);
} finally {
console.log('finally');
}
console.log('foo2 end');
}
foo2()
// 没有异常打印:
//foo2 start
//foo2
//try
//foo1 start
//foo1
//foo1 end
//finally
//foo2 end
function foo1() {
console.log('foo1 start');
console.log('foo1');
// 抛出异常
throw new Error('报错了')
console.log('foo1 end');
}
function foo2() {
console.log('foo2 start');
console.log('foo2');
try {
console.log('try');
foo1()
} catch (error) {
console.log(error);
} finally {
console.log('finally');
}
console.log('foo2 end');
}
foo2()
// 抛出异常打印:
//foo2 start
//foo2
//try
//foo1 start
//foo1
//Error: 报错了
// at foo1 (test.html:19:13)
// at foo2 (test.html:29:9)
// at test.html:38:5
//finally
//foo2 end