try: 语句测试代码块的错误,一般把可能会出错的代码放到这里
catch: 只有try里面的代码块发生错误时,才会执行这里的代码,参数err记录着try里面代码的错误信息
finally: 无论有无异常里面代码都会执行
1 try{ 2 console.log(0); 3 }catch (err){ 4 console.log(1); 5 console.log(hello); 6 }finally { 7 console.log(2); 8 } 9 //最后结果分别打印出 0 2 10 11 12 /* 13 try{ 14 a.b.c(); 15 }catch (e){ 16 console.log(1); 17 console.log(hello); 18 }finally { 19 console.log(2); 20 } 21 */ 22 //最后结果分别打印出 1 2 报错:hello is not defined 23 24 25 26 /* 27 try{ 28 a.b.c(); 29 }catch (e){ 30 console.log(1); 31 try{ 32 console.log(hello); 33 }catch (e){ 34 console.log(3); 35 } 36 }finally { 37 console.log(2); 38 console.log(word); 39 } 40 */ 41 //最后结果分别打印出 1 3 2 报错:word is not defined 42 43 44 45 /* 46 try{ 47 a.b.c(); 48 }catch (e){ 49 console.log(1); 50 console.log(hello); 51 }finally { 52 console.log(2); 53 console.log(word); 54 }*/ 55 //最后结果分别打印出 1 2 报错:word is not defined
总结:
try里面的代码报错的时候,catch里面的代码才会执行,finally里面的代码永远会执行
catch和finally里面,正常的代码会从上到下顺序执行
如果只是catch里面代码出错,则报catch里面的错误
如果catch和finally都出错则会报finally里面的错误