<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      來自微軟關于異常處理的17條軍規

      1. 不要返回錯誤代碼。異常是報告框架中的錯誤的主要手段。
        這個就不討論了,異常包含的信息量遠不是幾個錯誤代碼可以替代的.

      2. 通過引發異常來報告執行故障。如果某一成員無法按預期方式成功執行,則應將這種情況視為一個執行故障并引發一個異常。
        例如函數的參數檢測,參數不符合輸入要求,就應該引發一個異常.另外還有很多情況,只要程序無法按照預定的邏輯執行下去,就應該引發一個異常.

      3.如果代碼遇到繼續執行則不安全的情況,應考慮通過調用 System.Environment.FailFast(System.String)(.NET Framework 2.0 中的一種功能)來終止進程,而不是引發異常。
        代碼遇到異常,如果異常不是可以接受的.那么就應該立即終止.避免更嚴重的后果.“FailFast 方法使用 message 參數向 Windows Application 事件日志寫入日志項,創建應用程序的轉儲,然后終止當前進程。 如果應用程序狀態為損壞且無法修復,并且執行應用程序的 try-finally 塊和終結器將損壞程序資源,請使用 FailFast 方法而不是 Exit 方法終止應用程序。FailFast 方法終止當前進程并執行任何 CriticalFinalizerObject 對象,但不執行任何活動 try-finally 塊或終結器。 ”

      4. 盡可能不對正常控制流使用異常。
        就是不能用異常來控制業務邏輯.異常是不應該屬于正常運作范圍.你的程序Catch部分除了寫日志,釋放資源(更多時候應該放到finally塊)和拋出異常外,不應該有任何業務邏輯.

      5. 考慮引發異常的性能影響.
        異常是極其消耗資源的,當大量引發異常的時候會導致性能問題.所以,結合上一條,不要用異常控制流程.就是你的代碼正常使用下,是不需要觸發異常的.

      6. 不要包含可以根據某一選項引發或不引發異常的公共成員。
        就是不要創建類似function(bool isThrowException)這樣的函數或方法,結合第3條理解,這樣的方法已經觸犯了用異常控制流程的禁忌.觸發異常必須拋出,一直拋到你處理異常的地方.

      7. 不要包含將異常作為返回值或輸出參數返回的公共成員。
        同理,觸犯第3條軍規.

      8. 考慮使用異常生成器方法。從不同的位置引發同一異常會經常發生。為了避免代碼膨脹,請使用幫助器方法創建異常并初始化其屬性。
        使用異常幫助類. 或者這里是說自定義異常?經常發生的自定義異常可以用生成器的方法生成?或者封裝異常生成類。減少資源調用。

      9. 避免從 finally 塊中顯式引發異常。可以接受因調用引發異常的方法而隱式引發的異常。
        Finally模塊是處理異常的地方,不應該在這個地方引發異常.但是如果要調用引發異常的方法做處理而引發的異常則可以接受。

      10. 考慮引發 System 命名空間中的現有異常,而不是創建自定義異常類型。如果錯誤狀態可以通過不同于現有任何其他異常的方法以編程方式進行處理,則要創建并引發自定義異常。否則,引發一個現有異常。
        盡量引發系統異常,除非必要不必創建自定義異常類。只要日志寫得好,處理異常會很方便。

      11. 引發適當的最具體(派生程度最大)的異常。
        就是盡量讓異常靠近實際錯誤情況。而不是一律拋出SystemException了事。
       
      12.不要引發 System.Exception 或 System.SystemException。
        因為引發最普遍的異常并不能更有效的幫助人們認清楚錯誤和及時進行錯誤處理。Exception越具體,幫助越大。

      13. 避免捕捉 System.Exception 或 System.SystemException,在頂級異常處理程序中除外。
        除非在頂級最終寫Log的時候,否則不應該捕捉最普遍的異常。個人因為只應該在頂級處理捕捉異常。底層異常一律往上拋即可。

      14. 對于可能在常見方案中引發異常的成員,可以考慮使用 Tester-Doer 模式來避免與異常相關的性能問題。
        例如,對于函數的參數問題,就必須創建檢測類檢測輸入是否正確.

        對于可能在常見方案中引發異常的成員,可以考慮使用 TryParse 模式來避免與異常相關的性能問題。
        TryParse模式參考int.TryParse等.就是創建正常運行的條件避免拋出異常.

      15. 一般不要隱藏異常轉而拋出其他異常。
        不要將拋出的異常攔截轉而拋出自定義的異常。除非拋出的異常而包含該原始異常,否則對異常了解非常不利。

      16. 定要在所有異常上都提供(至少是這樣)下列常見構造函數。確保參數的名稱和類型與在下面的代碼示例中使用的那些相同。

      自定義異常MS推薦重載:

       

      Code
      public class NewException : BaseException, ISerializable
      {
          
      public NewException()
          {
              
      // Add implementation.
          }
          
      public NewException(string message)
          {
              
      // Add implementation.
          }
          
      public NewException(string message, Exception inner)
          {
              
      // Add implementation.
          }

          
      // This constructor is needed for serialization.
         protected NewException(SerializationInfo info, StreamingContext context)
         {
              
      // Add implementation.
         }
      }


      17.在引發異常時為開發人員提供豐富且有意義的消息文本。
        "消息應說明導致異常的原因并清楚描述避免該異常需采取的操作。消息應針對開發人員設計。確保異常消息的語法正確。頂級異常處理程序可以向應用程序終端用戶顯示異常消息。確保消息文本的每個句子都是以句號(“。”)結尾。這樣,向用戶顯示異常消息的代碼不必處理開發人員忘記最后面的句號的情況,這種處理相當麻煩而且代價很大。避免在異常消息中使用問號(“?”)和感嘆號(“!”)。不要在不要求相應權限的異常消息中透露安全敏感信息。"
       

      posted @ 2009-06-17 12:03  KenBlove  閱讀(956)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲欧洲AⅤ综合一区| 国产极品视频一区二区三区| 国产日韩精品中文字幕| 国产日韩av二区三区| 大地资源中文第二页日本| 国内精品视频区在线2021| 久久久久成人片免费观看蜜芽| 国产在线观看91精品亚瑟| 日韩精品国产中文字幕| 狠狠色噜噜狠狠狠狠av不卡| 老色鬼在线精品视频| 国产精品亚洲а∨天堂2021| 久久精品亚洲精品国产区| 国产一区二区三区国产视频| 国产系列丝袜熟女精品视频 | 2020国产成人精品视频| 亚洲人成色99999在线观看| 亚洲夜色噜噜av在线观看| 在线中文字幕国产精品| 国产成人无码精品久久久露脸| 少妇熟女天堂网av| 亚洲欧洲日韩国内高清| 久久久久国产一级毛片高清版A| 中文字幕国产精品专区| 国产视频最新| 亚洲天堂在线观看完整版 | 国产精品亚洲综合久久小说| 久久天堂综合亚洲伊人HD妓女| 免费观看全黄做爰大片国产 | 国产精品黄色精品黄色大片| 日韩中文字幕av有码| 欧洲美女黑人粗性暴交视频| 九九热在线免费视频观看| 天天澡日日澡狠狠欧美老妇| 综合色天天久久| 免费特黄夫妻生活片| 91亚洲精品一区二区三区| 樱桃视频影院在线播放| 人人人澡人人肉久久精品| 亚洲综合色网一区二区三区| 天天影视色香欲综合久久|