問題
Try Catch需注意,建議盡量使用using
解決方法
最近發現有些人的Try Catch 是這樣用的
string msg = "test"; try { throw new Exception("test err"); } catch (Exception ex) { msg = ex.Message; throw ex; }然而這種用法有時候會造成程式資源無法釋放(在IIS上資源會無法回收),有時候又可以正常,原因何在??!!
是因為當使用Try Catch時,在Catch區塊裡攔截的是Try區塊裡的動作,但是如果在Catch區塊裡又出現exception時,就發生了無法處理的窘境,其實解決方式很簡單,有兩種方式
1.在現有的Try Catch外在加一層Try Catch,以確保在內層的Catch發生異常時有辦法處理,但是缺點是耗用更多資源去處理exception,正確作法是Catch裡不要做任何會造成exception的動作
2.使用using(這邊指的是有繼承IDispose的class or inerface),當物件本身有實作IDispose的時候,就使用using去實體化物件,以確保資源正確釋放
沒有留言:
張貼留言