Is try/catch around whole C# program possible?

后端 未结 2 513
刺人心
刺人心 2021-02-01 05:09

A C# program is invoked by:

Application.Run (new formClass ());

I\'d like to put a try/catch around the whole thing to trap any uncaught except

相关标签:
2条回答
  • 2021-02-01 05:50

    To catch Windows Form's unhandled exceptions hook-up the AppDomain.UnhandledException and Application.ThreadException events.

    Of interest: Unexpected Errors in Managed Applications

    0 讨论(0)
  • 2021-02-01 05:55

    Basically, you cannot catch all exceptions when using the default CLR hosting process. Period. This is because the AppDomain.UnhandledException event is a notification only, you cannot handle the exception (which means that you cannot prevent the application from being terminated after processing the notification).

    However, you can catch and handle all exceptions in the UI thread of a WinForms application by using its Application.ThreadException handler (and control the behavior via UnhandledExceptionMode). Other threads which throw an exception will not be caught by this handler.

    In general, it's not a good idea to try and handle all exceptions. You can, however, use the AppDomain.UnhandledException to log the error and/or perform important cleanup tasks (e.g. shutting down a file-based databaseor whatever).

    0 讨论(0)
提交回复
热议问题