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

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

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

      Enterprise Library 2.0 Hands On Lab 翻譯(7):異常應用程序塊(一)

      練習1 記錄異常信息

      通過本練習,將會在一個沒有異常處理的應用程序中使用異常處理應用程序塊添加本地和全局的異常處理,并記錄到Windows事件日志中。

       

      第一步

      打開Puzzler.sln 項目,默認的安裝路徑應該為C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Exception Handling\exercises\ex01,并編譯。

       

      第二步 回顧應用程序

      選擇Debug | Start Debugging菜單命令運行應用程序,當前應用程序并沒有出現異常信息。當嘗試增加一個帶有數字的單詞(在文本框中輸入“abc123”并單擊Add Word按鈕)到目錄中時,將會出現一個未處理的異常,調試將會中斷。

      選擇Debug | Stop Debugging菜單命令退出應用程序并返回Visual Studio。

       

      第三步 增加Try/Catch異常處理

      1.選擇PuzzlerUI項目,并選擇Project | Add Reference …菜單命令,選擇Browse項并添加如下程序集。

      Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll

      默認的安裝位置為C:\Program Files\Microsoft Enterprise Library January 2006\bin。

      2.在解決方案管理器中選擇Puzzler.cs文件,并選擇View | Code菜單命令,添加如下命名空間。

      using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;

      3.在btnAddWord_Click方法中添加如下代碼,在調用AddWord SetError時添加try/catch區。

      private void btnAddWord_Click(object sender, System.EventArgs e)

      {
          
      try

          
      {
              
      // TODO: Handle exceptions

              PuzzlerService.Dictionary.AddWord(txtWordToCheck.Text);

              errorProvider1.SetError(txtWordToCheck, 
      "");

          }


          
      catch (Exception ex)

          
      {

              
      bool rethrow = ExceptionPolicy.HandleException(ex, "UI Policy");

              
      if (rethrow)

                  
      throw;

              MessageBox.Show(
      string.Format(

                  
      "Failed to add word {0}, please contact support.",

                  txtWordToCheck.Text));

          }


      }

      注意這里使用throw語句非常重要,而不能使用throw ex。如果使用throw ex將在重新拋出異常點對異常信息重新進行包裝,這樣達不到預期的效果。

       

      第四步 企業庫配置工具

      1.在項目PuzzlerUI中添加一個新的應用程序配置文件(App.config)。單擊PuzzlerUI項目,選擇Project| Add New Item…菜單命令,然后選擇Application configuration file模版,保留App.config名字。

      2.使用Enterprise Library配置工具配置應用程序,可以通過開始菜單打開該配置工具,選擇所有程序| Microsoft patterns and practices | Enterprise Library | Enterprise Library Configuration,并打開App.config文件。或者直接在Visual Studio中使用該工具打開配置文件。

      3.在解決方案管理器中選中App.config文件,在View菜單或者在右鍵菜單中選擇Open With…,將打開OpenWith對話框,單擊Add按鈕。

      4.在Add Program對話框中,設置Program name指向EntLibConfig.exe文件,默認的路徑為C:\Program Files\Microsoft Enterprise Library January 2006\bin,設置Friendly nameEnterprise Library Configuration,單擊OK按鈕。

      Visual Studio會把配置文件(App.config)作為一個命令行參數傳遞給EntLibConfig.exe

      5.在Open With對話框中,選中Enterprise Library Configuration并單擊OK按鈕。

       

      第五步 配置應用程序以使用異常管理

      1.右擊應用程序并選擇New | Exception Handling Application Block

      2.選中Exception Handling Application Block節點,選擇Action | New | Exception Policy菜單命令,設置Name屬性為UI Policy。

      3.選中UI Policy節點,選擇Action | New | Exception Type菜單命令,將會打開Type Selector對話框,選擇System.Exception(默認)并單擊OK按鈕。

      4.選中Exception節點,設置屬性PostHandlingActionNone。

      這將會使所有的異常都會被異常處理代碼所處理。

      5.選中Exception Handling Application Block | UI Policy | Exception節點,選擇Action | New | Logging Handler菜單命令。

      注意通過這步操作之后將會自動包含日志應用程序塊到配置中來。

      6.選擇Exception Handling Application Block | UI Policy | Exception | Logging Handler節點,并設置如下屬性。

      FormatterType = TextExceptionFormatter

      LogCategory = General

      7.選擇菜單File | Save All保存應用程序的配置,并關閉Enterprise Library Configuration工具。

       

      第六步 加入異常記錄程序集

      選擇項目PuzzlerUI,選擇Project | Add Reference …菜單命令,在彈出的對話框中選中Browse項并加入如下程序集。

      Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll

       

      第七步 運行應用程序

      1.選擇Debug | Start Without Debugging菜單命令運行應用程序。在Word to check文本框中輸入數字并單擊Add Word按鈕。將會彈出一個錯誤信息提示框,顯示的信息為“Failed to add word …, please contact support”。

      2.打開Windows事件查看器,查看應用程序日志,異常信息已經被記錄。

      3.關閉應用程序

       

      第八步 添加全局異常處理

      1.雖然可以在每一個事件處理的地方都加入try/catch程序塊來處理異常,但通常更好的方法是加入一個全局的異常處理不管任何時候發生異常都會被處理。

      2.在解決方案管理器中選擇Puzzler.cs文件,選擇View | Code菜單命令。在方法btnAddWord_Click中移除前面添加的異常處理程序,使其變為如下的代碼。

      private void btnAddWord_Click(object sender, System.EventArgs e)

      {

          PuzzlerService.Dictionary.AddWord(txtWordToCheck.Text);

          errorProvider1.SetError(txtWordToCheck, 
      "");

      }

      3.在解決方案管理器中選擇Startup.cs文件,選擇View | Code菜單命令,添加如下的命名空間。

      using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;

      應用程序的入口點,這里提供了兩個事件可以用來處理異常信息。當一個未處理的異常發生在主工作線程上時Application.ThreadException事件被觸發,當異常發生在不同于UI的線程上時AppDomain.UnhandledException將會被觸發。

      4.添加如下異常處理程序到Startup類中。

      public static void HandleException(Exception ex, string policy)

      {
          Boolean rethrow 
      = false;

          
      try

          
      {
              rethrow 
      = ExceptionPolicy.HandleException(ex, policy);

          }


          
      catch (Exception innerEx)

          
      {
              
      string errorMsg = "An unexpected exception occured while " +

                  
      "calling HandleException with policy '" + policy + "'. ";

              errorMsg 
      += Environment.NewLine + innerEx.ToString();

              MessageBox.Show(errorMsg, 
      "Application Error",

                  MessageBoxButtons.OK, MessageBoxIcon.Stop);

              
      throw ex;
          }



          
      if (rethrow)
          
      {
              
      // WARNING: This will truncate the stack of the exception

              
      throw ex;

          }


          
      else

          
      {

              MessageBox.Show(
      "An unhandled exception occurred and has " +

                  
      "been logged. Please contact support.");

          }


      }

      該方法用于異常處理程序塊,它用于當異常處理程序塊本身出現問題時(比如說配置錯誤)顯示錯誤信息。

      5.添加如下代碼到應用程序的ThreadException事件中。

      static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)

      {

          HandleException(e.Exception, 
      "UI Policy");

      }

      該事件處理將使用UI Policy策略,在配置文件中定義的。

      6.為AppDomain UnhandledException添加如下代碼。

      static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)

      {

          
      if (e.ExceptionObject is System.Exception)

          
      {

              HandleException((System.Exception)e.ExceptionObject, 
      "Unhandled Policy");

          }


      }

      該事件處理將使用一個新的名為Unhandled Policy的處理策略,在下一個練習中將會設置它,它只能被記錄而不允許重新被拋出。

      7.把事件處理與事件之間連接起來,在Main方法中加入如下代碼。

      static void Main()

      {
          
      // TODO: Handle unhandled exceptions

          Application.ThreadException 
      +=

              
      new ThreadExceptionEventHandler(Application_ThreadException);

          AppDomain.CurrentDomain.UnhandledException 
      +=

              
      new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

          Puzzler f 
      = new Puzzler();

          Application.Run(f);

      }

      8.選擇Debug | Start Without Debugging菜單命令運行應用程序。在Word to check文本框中輸入數字并單擊Add Word按鈕。將會彈出一個錯誤提示信息“An unhandled exception occurred and has been logged. Please contact support.”,可以在事件日志中查看異常信息。

      9.關閉應用程序和Visual Studio。

       

      更多Enterprise Library的文章請參考《Enterprise Library系列文章

      posted @ 2006-10-07 00:27  TerryLee  閱讀(8140)  評論(11)    收藏  舉報
      主站蜘蛛池模板: 少妇人妻偷人精品系列| www插插插无码免费视频网站| 国产一区二区不卡视频在线| 中文字幕无码av不卡一区| 中国丰满少妇人妻xxx性董鑫洁| 动漫精品中文无码卡通动漫| 涩涩爱狼人亚洲一区在线| 在线高清理伦片a| 日韩精品中文字幕有码| 亚洲精品自拍在线视频| 无码熟妇人妻AV在线影片最多| 汤原县| 国产熟女精品一区二区三区| 香蕉EEWW99国产精选免费| 久久国产精品精品国产色婷婷| 国产午夜福利精品视频| 亚洲精品专区永久免费区| 五月天丁香婷婷亚洲欧洲国产| 欧美在线观看www| 国产亚洲精品日韩av在| 国产精品99一区二区三区| 夜夜躁狠狠躁日日躁| 国产精品人成视频免费国产| 国产精品免费看久久久| 鄢陵县| 天天躁日日躁狠狠躁中文字幕| 国内精品久久久久影院蜜芽| 亚洲精品日韩在线观看| 99国产精品欧美一区二区三区| 国产精品久久蜜臀av| 影音先锋人妻啪啪av资源网站| 欧洲精品码一区二区三区| 国产高在线精品亚洲三区| 男受被做哭激烈娇喘gv视频| 久久久久蜜桃精品成人片公司| 国产精品大片中文字幕| 亚洲乱亚洲乱妇50p| 成在线人永久免费视频播放 | 2021国产成人精品久久| 中国china露脸自拍性hd| 日韩av日韩av在线|