Static Class Program { /// <Summary> /// ApplicationProgram. /// </Summary> [Stathread] Static Void Main () {application. threadexception + =Application_threadexception; application. setunhandledexceptionmode (unhandledexceptionmode. catchexception); appdomain. currentdomain. unhandledexception + = Currentdomain_unhandledexception; application. enablevisualstyles (); application. setcompatibletextrenderingdefault ( False ); Application. Run ( New Mainform ());} /// <Summary> /// Handle unprocessed exceptions in the application domain (non-UI thread exceptions) /// </Summary> /// <Param name = "sender"> </param> /// <Param name = "E"> </param> Static Void Currentdomain_unhandledexception ( Object Sender, unhandledexceptioneventargs e ){ Try {Exception ex = E. exceptionobject As Exception; MessageBox. Show (ex. Exception. Message );} Catch {}} /// <Summary> /// Unhandled application exception (ui thread exception) /// </Summary> /// <Param name = "sender"> </param> /// <Param name = "E"> </param> Static Void Application_threadexception ( Object Sender, threadexceptioneventargs e ){ Try {MessageBox. Show (E. Exception. Message );} Catch {}}}
Note the following:CodeApplication. Run (New mainform (); only one application. Run code can be executed here, if you write the code as follows:
Application. Run (NewSplashscreenform (); application. Run (NewMainform ());
If an unhandled exception (ui exception or non-UI exception) occurs in mainform, the above exception handler cannot be captured.