.NET異常處理最佳實務方案

來源:互聯網
上載者:User

        這段時間在準備.NET錯誤處理方面知識的時候,找到一些不錯的東西,這裡拿來給大家分享。

        關於.NET的異常處理,其實和JAVA是非常類似的,都是有了GC(記憶體回收行程)。而在早期的VB/C/C++中貌似是沒有記憶體回收這個說法的,關於GC的各個好處大家都心知肚明了。那麼,我們各位“猿”應該如何利用GC,更高效的編程呢?

        說實話,這部分內容不太好整理,也不太好說明白。這些天反覆整理這些內容,總覺得沒有抓住重點,花了非常大的功夫。後來想想,瞭解他的機制,倒不如多學學如何更好的利用它。

        在此之前,先說一些基本的概念。

        錯誤:程式中的錯誤一般分為三類:語法錯誤、邏輯錯誤、執行階段錯誤。在異常處理中,錯誤主要說的是執行階段錯誤,即已編譯好的程式在執行過程中出現的問題。

        異常:由於錯誤的出現,運行時建立的用於處理錯誤的對象。

        這裡要強調的是:錯誤是指一個事件,而異常則是為了處理這個事件而建立的對象。

 

        這裡給出一些好的實踐方案,或者也可是說是異常處理原則。

        1、及早檢查。

                發現問題越早,這個問題就越容易解決
        2、不要相信外部資料

                所有的外部資料都應該被檢查(資料庫、檔案、鍵盤等)
        3、盡量不要拋出new Exception()

                Exception是一個非常大的類,包含的資訊量大
                盡量使拋出的異常有針對性,能提供有意義的錯誤資訊。
        4、記錄異常

                如果你捕獲一個異常,一定要在某處加以記錄,不要只記錄.message中的資訊,要記錄所有的錯誤資訊。
        5、不要吞掉異常

                你做的最糟糕的事情是在catch (Exception)後加了一個空的模組。
        6、經常使用Using

                即使在有異常出現的地方,關鍵字using也會阻止資源泄漏。例如

        using(SqlConnection conn = new SqlConnection())        {            //do something;        }

        7、不要把異常處理方法作為從函數中返回資訊的手段(不要用異常控制流程程)

                不僅異常的處理緩慢,而且代碼中許多的try/catch模組會導致代碼很難維護。
        8、為那些不該被忽略的錯誤使用異常

                如果方法的執行有一定的要求或者前提,則應該使用異常,這樣調用程式就不能忽略它(例如,某些方法需要使用者資訊)
        9、當再次拋出異常時不要清空堆棧追蹤

 

                 Try  {

                        }
                 catch(Exception ex)
                 {

                     //錯誤的方式

                      throw ex;

                 }

                Try{

                      }
                catch(Exception ex)
                 {

                      //正確的方式

                     throw ;

                 }

       這裡都是說捕獲到異常之後再次拋出,之所以說第一種情況是錯誤,是因為,第一種情況下,拋出的是新的異常,原來的異常資訊被覆蓋掉了。而第二種情況會保留捕獲到的異常資訊,在原來錯誤的基礎之上增加新的錯誤資訊以拋出。

        10、異常應該用[Serializable]標識

                多數情況下需要異常是可序列化的。當從另一個異常類繼承的時候,不要忘記增添這一屬性。

這裡也是借鑒了很多大牛的文章,自己感覺很受用,所以拿出來分享給大家。如果有什麼不足或者更好的見解,多多提出!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.