關於finally的一些認知

2021-06-27 15:51:41 字數 1556 閱讀 2033

簡介:相信大家在開發中都能使用很好的處理異常,那麼避免不了和try catch finally 接觸,慢慢的發現了下面的幾個問題,開發環境是vs2010 +reshaper,當你想使用**塊時,智慧型提示會提示try和tryf兩種,那麼這兩種**塊有什麼樣的區別那,還有就是c#中的return是結束當前執行的方法,那麼如果我們在使用try catch finally時,在try**塊和catch**塊中都return;一下,那麼finally中的**還會執行嗎,如果執行的話,如果return 後面是呼叫乙個方法,那麼return後面的方法中的**和finally中的**那個先執行那,下面帶著這兩個問題,我們來弄兩個小例子

1.第乙個例子,來說明try ,tryf的區別

當我們鍵入try 回車時,vs會新增以下**,

trycatch (exception)

上面的這種方式,主要適用於處理託管資源的異常處理,不需要在finally中關閉連線等操作

當我們鍵入tryf 回車時,vs會新增以下**

tryfinally

那麼這種異常處理,適用於哪種情況那,按說出現了finally應該是用來釋放占用資源的處理吧,可這種方式,真的能釋放資源嗎,答案是否定的

我認為智慧型提示的作用是用來提高開發人員的額開發效率的,但是如果提示的**塊可能包含某些可能存在的錯誤的話,這種智慧型提示還是不要有的好,因此,我們也可以總結出,在c#的開發中如果我們要使用異常處理,有以下兩種參考方式,

trycatch (exception)

或者try

catch (exception e)

finally

前一種解決是託管資源的異常,後一種解決是非託管資源的異常,第乙個?,就到這裡吧,多說一句,之所以會出現上面的疑問,大家自己可以嘗試著上面3種可能的異常處理多級巢狀試試,就知道為什麼建議用後兩種方式了

2.第二個例子

首先我們先來解決第乙個疑問,

上**

從上面2個圖可知,try,catch中return了,finally中的**執行了,第乙個小疑問,解決,注意finally中是不允許出現return的,編譯都通不過,

再多想乙個問題,如果**修改如下:

可以看出try,catch中的return對finally中的**的執行時沒有影響的,但是對後面的**時起作用的

接下來,我們解決第二個小疑問

從圖中看出現執行了return 後的testvoid方法,後自行了finally中的**,第二個問題解決

多維陣列關於指標的一些認知

include void main printf d,a printf d,a printf d,a 0 printf d,a 0 printf d n a 0 0 以上均輸出第0行0列的位址 printf d,a 1 printf d,a 1 printf d,a 1 printf d,a 1 p...

關於觸發器的一些認知

1.什麼是觸發器,作用是什麼?觸發器是一種特殊的儲存過程,主要通過事件的觸發而被執行的。它可以強化約束,來維護資料的完整性和一致性,可以跟蹤資料庫內的操作從而不允許未經許可的更新和變化,可以進行聯級運算,例 你可以根據客戶當前的帳戶狀態,控制是否允許插入新訂單。2.觸發器的建立 create tri...

關於自己的一些不為認知的想法

每次想寫點什麼,但是每次都是以失敗告終,不是因為這而沒有繼續下去,就是因為那而沒有繼續下去。但是今天,就今天,我下定決心,一定要將這一篇blog寫完,絕不中途而非!一直以來,我給某些人的感覺就是我很忙,但是實際上呢?我自己是很清楚的,有時候是很忙,但是不是每時每刻都很忙呀,成天不是忙這事就是忙那事,...