根据我的经验,unhandled exception
应用程序中的.NET
可能会导致显示描述异常等的对话框。
Background Thread
?答案 0 :(得分:0)
是的,这是可能的,但您必须认真考虑它对您的应用程序意味着什么。
如果发生未处理的异常,您的应用程序可能处于意外/未定义状态,并且使应用程序崩溃可能更有意义 - 替代方案可能不一致或冻结UI,甚至差。
话虽如此,您并未说明您是使用WPF,WinForms,控制台应用程序还是ASP .NET,还是其他。您需要告诉我们您正在使用的技术;但一般来说,你应该能够连接一个全局异常处理程序,它只是抑制异常。
对于后台线程部分,您可以简单地将线程函数包装在try catch块中。
答案 1 :(得分:0)
未处理的异常实际上会终止您的流程。如何呈现给用户取决于Windows。例如,如果安装了调试器,则会出现一个对话框,允许您调试该过程。这不是您在应用程序中控制的内容。
但是,如果您的应用程序是Windows窗体应用程序,则.NET框架将为未处理的异常设置处理程序,该处理程序将打开一个对话框,其中包含有关异常的一些信息,然后允许您的进程继续。我认为那是你所指的对话框。
要避免这种行为,最好的方法是使用try-catch块实际捕获和处理异常。当然,捕获然后完全忽略异常通常是一个坏主意,可能会隐藏应用程序中的错误。
您可以自定义Windows窗体如何处理您未使用Application.SetUnhandledExceptionMode
方法捕获的异常。
答案 2 :(得分:0)
偶然发现了这个问题,因为我的自动化测试被我要抑制的异常对话框阻止了。此问题标题优于此案例的任何类似stackoverflow问题,因此Google将此发送给我。然而,问题正文和答案更倾向于采用程序化方法。
鉴于帖子标题,提供一个解决问题而无需修改源代码的答案似乎是合理的。
最终,我可以通过将注册表中的DontShowUI
密钥设置为1
来禁止异常对话框。此修订以及一系列备选方案详细描述于: