我們已經開發了一個.NET 3.5 CF應用程序,由於未處理的異常,我們遇到了一些應用程序崩潰,引發了一些lib代碼。如何「捕獲」未處理的異常
應用程序終止並顯示標準應用程序彈出式異常消息框。
有沒有辦法捕獲所有未處理的異常?或者至少,從消息框中獲取文本。我們的大多數客戶只需重新啓動設備,以便我們無法查看異常消息框。
任何想法?
我們已經開發了一個.NET 3.5 CF應用程序,由於未處理的異常,我們遇到了一些應用程序崩潰,引發了一些lib代碼。如何「捕獲」未處理的異常
應用程序終止並顯示標準應用程序彈出式異常消息框。
有沒有辦法捕獲所有未處理的異常?或者至少,從消息框中獲取文本。我們的大多數客戶只需重新啓動設備,以便我們無法查看異常消息框。
任何想法?
您是否添加了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);
}
我做了類似於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.
}
}
}
也許他可以評論我的技術是好還是壞。
這將經常錯過工作線程和本機異常中的異常。一個AppDomain.UnhandledException處理程序往往會捕獲更多的東西。 – ctacke 2013-02-19 15:08:28
令人驚歎!我將它添加到了我的一些項目中,但沒有顯示任何錯誤跡象,並且這種情況正在捕獲我從未知道發生的異常。 – jp2code 2013-02-25 02:45:52