Analytics

2013年6月14日 星期五

[C#]使用 Try Catch需注意,建議盡量使用using (Try Catch use should pay attention to, it is recommended to make use of using)


問題

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去實體化物件,以確保資源正確釋放




沒有留言:

熱門文章