gpt4 book ai didi

c# - UnhandledException 事件不起作用?

转载 作者:太空狗 更新时间:2023-10-29 17:52:07 26 4
gpt4 key购买 nike

我正在编写一个小库来捕获所有未处理的异常,显示一个小对话框(类似于 NF 的常用对话框),让用户有机会将异常发送给开发人员。为此,我像这样使用 AppDomain 的 UnhandledException-Event:

app.UnhandledException += (object sender, UnhandledExceptionEventArgs e) =>
{
ExceptionHandler handler = new ExceptionHandler((Exception)e.ExceptionObject, ExEntry);
UnhandledExceptionListened(handler);
if (Properties.Settings.Default.ShowStandardExceptionDialog)
{
ExceptionDialog exdialog = new ExceptionDialog(handler);
exdialog.ShowDialog();
}
};

ExceptionHandler 和 ExEntry 是我的库的类。但是:如果发生异常,编译器会跳转到我的 Lambda 表达式,尝试调试第一行代码,然后显示之前发生的错误,而不会处理其余的 lambda。但如果我只是写:

 app.UnhandledException += (object sender, UnhandledExceptionEventArgs e) =>
{
ExceptionDialog exdialog = new ExceptionDialog(handler);
exdialog.ShowDialog();
};

它完美地工作。有谁知道为什么这不起作用?

最佳答案

可能有两个原因。

一个是你没有设置UnhandledExceptionMode正确地:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

另一个是你没有处理ThreadException ,并且抛出的异常不是未处理的异常而是线程异常。

以下是示例,您需要根据自己的场景进行修改:

Application.ThreadException+=
new ThreadExceptionEventHandler(Log.WriteThreadException);

AppDomain.CurrentDomain.UnhandledException+=
new UnhandledExceptionEventHandler(Log.WriteUnhandledException);

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());

关于c# - UnhandledException 事件不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717884/

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