gpt4 book ai didi

c# - 在 C#/.NET 中避免 "program stopped working"

转载 作者:IT王子 更新时间:2023-10-29 04:12:44 25 4
gpt4 key购买 nike

我有一个用 C#/.NET 编写的控制台应用程序,我想从脚本 (nant) 运行它。如果控制台应用程序发生异常,我想继续,但在 Windows Vista 中有一个弹出窗口,用于搜索解决方案并要求调试等。

当控制台应用程序发生异常时,我想避免弹出“程序停止工作”。我如何从 C#/.NET 控制它?

(一个类似的问题地址 the issue for the C language,但我想要 C#/.NET 的解决方案。)

(澄清一下:我希望将异常传递给 nant,但没有弹出窗口。)

最佳答案

当出现未处理的异常时,会出现 JIT 调试器弹出窗口。也就是说,异常会一直沿着堆栈向上延伸到运行时中任何线程的根。

为避免这种情况,您可以处理 AppDomain.CurrentDomain.UnhandledException事件,只需调用 Environment.Exit(1)优雅地退出。

这将处理 AppDomain 中所有线程上的所有异常。除非您正在做任何特别的事情,否则您的应用可能只有一个 AppDomain,因此将其放入您的 public static void Main 方法中就足够了:

AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
{
Console.Error.WriteLine("Unhandled exception: " + args.ExceptionObject);
Environment.Exit(1);
};

在这种情况下,您可能也应该使用 NAnt 记录器来写出错误(虽然不记得这个副手的 API。)

您也可以disable JIT debugging在机器上。我只会在某些情况下推荐这样做,例如专用构建服务器。

关于c# - 在 C#/.NET 中避免 "program stopped working",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1421597/

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