本文深入解析JavaScript中try、catch和finally语句的执行逻辑。通过具体代码示例,阐明当try块抛出异常时catch与finally的执行顺序,以及catch或finally内部发生错误时的优先级规则。掌握这些细节有助于编写更健壮的JavaScript代码,确保资源清理和错误处理的可靠性。
try...catch...finally基本执行逻辑
try语句用于测试一段代码块是否存在错误,通常将可能引发异常的代码放置在此处。
catch语句仅在try代码块发生错误时执行,其参数err用于记录try块中产生的错误信息。
无论是否发生异常,finally块中的代码始终会执行。
代码执行顺序示例分析
try{
console.log(0);
}catch (err){
console.log(1);
console.log(hello);
}finally {
console.log(2);
}
//最后结果分别打印出 0 2
/*
try{
a.b.c();
}catch (e){
console.log(1);
console.log(hello);
}finally {
console.log(2);
}
*/
//最后结果分别打印出 1 2 报错:hello is not defined
/*
try{
a.b.c();
}catch (e){
console.log(1);
try{
console.log(hello);
}catch (e){
console.log(3);
}
}finally {
console.log(2);
console.log(word);
}
*/
//最后结果分别打印出 1 3 2 报错:word is not defined
/*
try{
a.b.c();
}catch (e){
console.log(1);
console.log(hello);
}finally {
console.log(2);
console.log(word);
}*/
//最后结果分别打印出 1 2 报错:word is not defined
错误处理优先级与异常传播规则
总结
当try块中的代码报错时,catch块才会执行;而finally块中的代码无论有无异常都会执行。
在catch和finally块内部,正常代码按照从上到下的顺序依次执行。
如果仅在catch块中的代码出错,系统将抛出catch块内的错误信息。
如果catch块和finally块均发生错误,系统将优先抛出finally块中的错误信息。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本站!