为什么trycatch有警告
10132023-08-20
本篇文章给大家谈谈为什么trycatch有警告,以及catch里面不建议return对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
本文目录
finally执行语句是在trycatch之后执行的,所以前面trycatch不会执行。【PS:但不能绝对说finally是在trycatch之后执行,也有例外。发生在有返回值的时候,trycatch里有returni,而finally里returni会在之前return】
try{}catch(Exceptione){ }finally{}其中finally{}是不管try{}catch{}是否捕获到异常,它始终会被执行。在finally语句的{}后的语句也会被执行,前提是在上面的语句没有检测到return;关键词
情况1:try{}catch(){}finally{}return; 程序按顺序执行。 情况2:try{return;}catch(){}finally{}return; 程序执行try块中return之前(包括return语句中的表达式运算)代码; 再执行finally块,最后执行try中return; finally块之后的语句return,因为程序在try中已经return所以不再执行。 情况3:try{}catch(){return;}finally{}return; 程序先执行try,如果遇到异常执行catch块, 有异常:则执行catch中return之前(包括return语句中的表达式运算)代码,再执行finally语句中全部代码, 最后执行catch块中return.finally之后也就是4处的代码不再执行。 无异常:执行完try再finally再return. 情况4:try{return;}catch(){}finally{return;} 程序执行try块中return之前(包括return语句中的表达式运算)代码; 再执行finally块,因为finally块中有return所以提前退出。 情况5:try{}catch(){return;}finally{return;} 程序执行catch块中return之前(包括return语句中的表达式运算)代码; 再执行finally块,因为finally块中有return所以提前退出。 情况6:try{return;}catch(){return;}finally{return;} 程序执行try块中return之前(包括return语句中的表达式运算)代码; 有异常:执行catch块中return之前(包括return语句中的表达式运算)代码; 则再执行finally块,因为finally块中有return所以提前退出。 无异常:则再执行finally块,因为finally块中有return所以提前退出。 最终结论:任何执行try或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。 如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的, 编译器把finally中的return实现为一个warning。
trycatchfinally有异常时才会执行catch,finally才是始终执行的。 不管是否有错,就算你在trycatch里面写了return都会执行。
好了,关于为什么trycatch有警告和catch里面不建议return的问题到这里结束啦,希望可以解决您的问题哈!