在哪里放置一个Windows窗体项目的中央error handling程序

在ASP.NET中,我可以在global.asax中使用Application_Error来处理任何未处理的错误。

在Windows窗体中是否有相同的内容?

Solutions Collecting From Web of "在哪里放置一个Windows窗体项目的中央error handling程序"

是的,它的AppDomain.UnhandledException

 using System; using System.Security.Permissions; public class Test { [SecurityPermission(SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlAppDomain)] public static void Example() { AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler); try { throw new Exception("1"); } catch (Exception e) { Console.WriteLine("Catch clause caught : " + e.Message); } throw new Exception("2"); // Output: // Catch clause caught : 1 // MyHandler caught : 2 } static void MyHandler(object sender, UnhandledExceptionEventArgs args) { Exception e = (Exception) args.ExceptionObject; Console.WriteLine("MyHandler caught : " + e.Message); } public static void Main() { Example(); } } 
 [STAThread] static void Main() { Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); Application.Run(new FrmMain()); } private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { MessageBox.Show("Unhandled exception: "+e.Exception.ToString()); } 

这取决于你的应用程序的体系结构。 例如,如果你做MVC架构,那么它应该在你的控制器。如果你知道责任链模式[GOF],或者如果你喜欢所有类型的执行的大处理器。 否则,你会告诉我们更多关于你的应用程序。