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

相關文章
相關標籤/搜索