gpt4 book ai didi

c# - 在不处于 Debug模式的情况下获取导致程序崩溃的异常

转载 作者:行者123 更新时间:2023-11-30 17:12:24 25 4
gpt4 key购买 nike

我有一个 C# 应用程序,我想通过从我的桌面运行 .exe 来运行它。但是,我很确定会有某种类型的错误会使程序崩溃。有没有办法将导致程序崩溃的问题写入文本文件,以便我可以在用户使用该程序时查看导致问题的原因?我知道我可以使用 Debug模式来执行此操作,但我想独立运行应用程序而不是在 VS 内部。

谢谢,

我知道 try catch block ,并且我已经在使用那些可能会出现问题的 block 。但我说的是一般情况。例如,如果我不确定问题会出现在哪里。无法将此特定错误打印到文件中。

最佳答案

您可以尝试使用全局 try/catch 方法,但如果后台线程出现异常,则不会被捕获。如果您希望在应用域 (msdn) 中收到任何未处理异常的通知,您可以使用 AppDomain.UnhandledException。在程序的其余部分执行之前,您将在 main 中注册:

static void Main(string[] args)
{
AppDomain.UnhandledException += WriteUnhandledExceptionToFile;

// rest of program
}

static void WriteUnhandledExceptionToFile(object sender, UnhandledExceptionEventArgs args)
{
// write to where ever you can get it.
string path = Path.Combine(Environment.CurrentDirectory, "UnhandledException.txt");
File.WriteAllText(path, args.ExceptionObject.ToString()); // will print message and full stack trace.
}

编辑

请注意,默认情况下,Windows 窗体和 WPF 会捕获在 UI 线程上引发的任何异常。您必须订阅 Application.ThreadException 事件(表单)或 Application.DispatcherUnhandledException 事件 (wpf) 才能收到有关这些线程异常的通知。该代码与上面的 AppDomain 事件代码非常相似。

关于c# - 在不处于 Debug模式的情况下获取导致程序崩溃的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692094/

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