我想在我的用戶界面應用程序在C#中捕獲所有未處理的異常,以便我可以記錄它們,通過郵件發送並重新啓動應用程序。嘗試/捕獲在C#中的所有異常
我該如何簡單地完成這項工作?我試過:
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainDlg());
}
catch (Exception e)
{
Logger.Log(e);
Logger.PostLog();
System.Diagnostics.Process.Start("App.exe");
}
但它讓一些例外通過。
有了這樣的方法,有一個邊緣情況,你的應用程序在啓動時爆發異常,然後重新啓動,只能再次炸燬。用戶將擁有能夠快速重新啓動的應用程序,即使使用任務管理器也很難殺死。這對大多數用戶來說都會有問題。你可能想用某種反擊機制來防止這種情況,當然這可能會再次拋出異常。對於這種機制,如果發生任何異常,請拋出一個特殊異常,該異常不會由重新啓動應用程序的異常處理程序處理。 – Frederik 2010-07-10 09:01:01
@FrederikB:謝謝你指出這個設計缺陷。 – apoorv020 2010-07-10 13:27:12