2013-02-18 175 views
1

我們已經開發了一個.NET 3.5 CF應用程序,由於未處理的異常,我們遇到了一些應用程序崩潰,引發了一些lib代碼。如何「捕獲」未處理的異常

應用程序終止並顯示標準應用程序彈出式異常消息框。

有沒有辦法捕獲所有未處理的異常?或者至少,從消息框中獲取文本。我們的大多數客戶只需重新啓動設備,以便我們無法查看異常消息框。

任何想法?

回答

6

您是否添加了UnhandledException事件處理程序?

[MTAThread] 
static void Main(string[] args) 
{ 
    AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; 

    // start your app logic, etc 
    ... 
} 

static void OnUnhandledException(object sender, UnhandledExceptionEventArgs e) 
{ 
    var exception = (Exception)e.ExceptionObject; 

    // do something with the info here - log to a file or whatever 
    MessageBox.Show(exception.Message); 
} 
+0

令人驚歎!我將它添加到了我的一些項目中,但沒有顯示任何錯誤跡象,並且這種情況正在捕獲我從未知道發生的異常。 – jp2code 2013-02-25 02:45:52

0

我做了類似於ctacke所做的一些事情。

private static Form1 objForm; 

[MTAThread] 
static void Main(string[] args) 
{ 
    objForm = new Form1(); 
    try 
    { 
    Application.Run(objForm); 
    } catch (Exception err) { 
    // do something with the info here - log to a file or whatever 
    MessageBox.Show(err.Message); 
    if ((objForm != null) && !objForm.IsDisposed) 
    { 
     // do some clean-up of your code 
     // (i.e. enable MS_SIPBUTTON) before application exits. 
    } 
    } 
} 

也許他可以評論我的技術是好還是壞。

+2

這將經常錯過工作線程和本機異常中的異常。一個AppDomain.UnhandledException處理程序往往會捕獲更多的東西。 – ctacke 2013-02-19 15:08:28

相關問題