winform程式未捕獲異常解決方案

來源:互聯網
上載者:User

轉自:http://www.cnblogs.com/kevinlzf/archive/2009/11/25/1610929.html

 

 

在開發winform程式時,用到多線程,在伺服器部署後運行,老是自動關才程式,癥狀描述如下:

在Windows Server 2003的作業系統上,運行.Net 2.0或者3.5的應用程式時,會發現沒有任何反應,到系統的事件檢視器裡會發現類似EventType clr20r3 P1....P2...PN的錯誤提示。

很可能的原因就是:應用程式出現了異常,而.net沒有或者無法捕捉該異常,所以導致出現如下情況:

1.程式自動關閉。

2.此時去工作管理員中會看到一個DW20.exe的進程,不久會自動消失

3.到事件檢視器裡面會發現類似EventType clr20r3 P1....P2...PN的錯誤提示。

 

 

解決方案一:.在config檔案中<configuration>     <runtime>         <legacyUnhandledExceptionPolicy enabled="true" />     </runtime></configuration>這樣,主程式遇到未捕獲異常不會強制關閉,但為了程式的穩定性與安全性,應該找出拋異常的地方,將其修改。

解決方案二:

         用到UnhandledExceptionEventHandler事件,通過這個事件,我們可以截獲未捕獲異常,並進行處理。

這個事件的事件參數UnhandledExceptionEventArgs e, 有兩個屬性,一個是ExceptionObject,這個屬性返回為截獲異常的對象執行個體。還有一個屬性是IsTerminating,這個屬性告訴我們這個異常是否會導致應用終止。這裡需要說明的是,對於.Net1.1 和 .Net2.0及以上,情況是不一樣的,.Net1.1 只有在主線程中的未捕獲異常才會終止應用程式,而.Net2.0及以上版本則是始終終止應用程式。

      在主表單main下,加         AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(UnhandledExceptionEventHandler);

並編碼UnhandledExceptionEventHandler事件,

        static void UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e)

        {

            try

            {

                LogHelper.ErrorLog(e.ExceptionObject.ToString());//LogHelper是寫日誌的類,這裡,可以直接寫到檔案裡

            }

            catch

            {

            }

        }

    運行程式,異常捕獲,找到了問題所在,對代碼進行改寫。

本文結束。

參考:

http://hi.baidu.com/ymwang/blog/item/07b1b20eab9cdde537d12265.html(重要)

 

http://www.cnblogs.com/xclw/archive/2009/09/29/1576436.html

 

http://www.cnblogs.com/dudu/archive/2006/05/07/393446.html

 

http://hi.baidu.com/xiejl/blog/item/98743c1f161cafc1a686697e.html

 

http://topic.csdn.net/t/20050304/22/3825910.html

 

http://www.yesky.com/258/1653758.shtml

http://www.cnblogs.com/eaglet/archive/2009/02/17/1392191.html(重要)

 

http://www.cnblogs.com/cgzwwy/archive/2008/08/31/1280597.html

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.