【问题标题】:Unhandled Exception handling in WinformsWinforms 中未处理的异常处理
【发布时间】:2014-05-30 06:01:58
【问题描述】:
[STAThread]
    static void Main()
    {
        try
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.ThreadException +=
                new ThreadExceptionEventHandler(Application_ThreadException);
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
            Application.Run(new Form1());                
        }
        catch (Exception e)
        {                

        }
    }
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
   //Code
}
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
   //Code
}

在 Form1.cs 我有以下内容。

private void backgroundWorkerLogin_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
     throw new Exception("Test");
}

异常仍然显示为未处理。谁能建议如何通过上面声明的事件处理程序捕获异常?

谢谢。

【问题讨论】:

    标签: c# winforms exception-handling


    【解决方案1】:

    ThreadException 事件仅适用于 UI 线程。其他线程中发生的所有异常都不会被捕获。

    您可以使用AppDomain.Current.UnhandledException 事件来捕捉这些。但是,您不能使用该事件阻止应用程序崩溃。

    因此,您必须始终确保在所有其他线程中使用try/catch

    【讨论】:

    • 我正在使用 AppDomain.Current.UnhandledException,但它仍然不起作用。我做错了吗?谢谢。
    • Still the exception is shown as unhandled。您的UnhandledException 事件无法阻止您的应用程序崩溃。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多