asp.net中try catch finally中含有return时的执行顺序

一、try{} catch(){}finally{} return;html


显然程序按顺序执行。spa


二、try{ return; }catch(){} finally{} return;htm


(1)、程序执行try块中return以前(包括return语句中的表达式运算)代码;get

(2)、再执行finally块,最后执行try中return;程序

(3)、finally块以后的语句return,由于程序在try中已经return因此再也不执行。异常


三、try{ } catch(){return;} finally{} return;co


(1)、程序先执行try,若是遇到异常执行catch块,
(2)、有异常:则执行catch中return以前(包括return语句中的表达式运算)代码,再执行finally语句中所有代码,最后执行catch块中return. finally以后也就是4处的代码再也不执行。
(3)、无异常:执行完try再finally再return.new


四、try{ return; }catch(){} finally{return;}return


(1)、程序执行try块中return以前(包括return语句中的表达式运算)代码;
(2)、再执行finally块,由于finally块中有return因此提早退出。tar


五、try{} catch(){return;}finally{return;}


(1)、程序执行catch块中return以前(包括return语句中的表达式运算)代码;
(2)、再执行finally块,由于finally块中有return因此提早退出。


六、try{ return;}catch(){return;} finally{return;}


(1)、程序执行try块中return以前(包括return语句中的表达式运算)代码;
(2)、有异常:执行catch块中return以前(包括return语句中的表达式运算)代码;则再执行finally块,由于finally块中有return因此提早退出。
(3)、无异常:则再执行finally块,由于finally块中有return因此提早退出。
 

 

参考资料: try中finally与return   http://www.studyofnet.com/news/1018.html

相关文章
相关标签/搜索