gpt4 book ai didi

.net - AppDomain.CurrentDomain.UnhandledException 在没有调试的情况下不会触发

转载 作者:行者123 更新时间:2023-12-03 22:22:48 26 4
gpt4 key购买 nike

我有一个带有绑定(bind)到 Application.CurrentDomain.UnhandledException 的事件处理程序的 .NET 程序。
运行带有调试的程序时,当抛出未处理的异常时会触发此事件。但是,在没有调试的情况下运行时,事件不会触发。

我的问题是什么?

谢谢,
安德鲁

最佳答案

我假设您没有使用 Application.SetUnhandledExceptionMode() 设置正确的异常处理模式- 只需将其设置为 UnhandledExceptionMode.ThrowException .

更新

我刚刚编写了一个小型测试应用程序,并没有发现任何可以正常工作的东西。您可以尝试使用此测试代码重现您的错误吗?

using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

namespace ConsoleApplication
{
public static class Program
{
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;

Application.ThreadException += Application_ThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

Application.Run(new TestForm());

throw new Exception("Main");
}

static void Application_ThreadException(Object sender, ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.Message, "Application.ThreadException");
}

static void AppDomain_UnhandledException(Object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show(((Exception)e.ExceptionObject).Message, "AppDomain.UnhandledException");
}
}

public class TestForm : Form
{
public TestForm()
{
this.Text = "Test Application";
this.ClientSize = new Size(200, 60);
this.MinimumSize = this.Size;
this.MaximumSize = this.Size;
this.StartPosition = FormStartPosition.CenterScreen;

Button btnThrowException = new Button();

btnThrowException.Text = "Throw";
btnThrowException.Location = new Point(0, 0);
btnThrowException.Size = new Size(200, 30);
btnThrowException.Click += (s, e) => { throw new Exception("Throw"); };

Button btnThrowExceptionOnOtherThread = new Button();

btnThrowExceptionOnOtherThread.Text = "Throw on other thread";
btnThrowExceptionOnOtherThread.Location = new Point(0, 30);
btnThrowExceptionOnOtherThread.Size = new Size(200, 30);
btnThrowExceptionOnOtherThread.Click += (s, e) => new Thread(() => { throw new Exception("Other thread"); }).Start();

this.Controls.Add(btnThrowException);
this.Controls.Add(btnThrowExceptionOnOtherThread);
}
}
}

关于.net - AppDomain.CurrentDomain.UnhandledException 在没有调试的情况下不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1300319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com