窗口服务中的全局处理异常

本文关键字:处理 异常 全局 服务 窗口 | 更新日期: 2023-09-27 18:00:45

我有一个作为服务器运行的windows服务。但是,服务器有时会因未处理的错误而立即停止。请帮助我如何处理全局异常。谢谢

窗口服务中的全局处理异常

在我看来,你试图以错误的方式解决问题。。。

当您的程序(或服务)由于未处理的错误而崩溃时,解决方案不是弄清楚在哪里以及如何"崩溃";手柄所有未处理的错误,以便您可以忽略它们并继续执行。我在这个答案中更清楚地阐述了这个观点,但简短的版本是,当您遇到未处理的异常时,正确的做法是崩溃。如原答复所述:

发生未处理的异常意味着服务器处于意外状态。通过抓住异常并说:;别担心,一切都很好;你最终会让一个损坏的服务器继续运行。

[…]

捕获所有异常并让进程继续运行假定服务器可以从意外故障中恢复。但这是荒谬的。你已经知道服务器无法恢复了:它崩溃了!

更好的方法是让服务器崩溃,这样就可以在发生故障时捕获崩溃转储。现在你有机会弄清楚发生了什么。

因此,事实上,真正的解决方案包括找出未处理异常的根本原因,并修改代码以从一开始就防止该错误发生。

我们无法帮助您做到这一点,除非您发布确切的异常消息,最好是完整的堆栈跟踪。但是,您肯定希望保留您获得的调试信息,而不是想出一种完全忽略它的方法——这是真正解决问题的唯一方法。

如果你仍然坚持无视所有善意的相反建议,你会发现;把头埋在沙子里,忽略它"方法在这里详细介绍。

您可以尝试使用AppDomain.CurrentDomain.UnhandledException事件,尽管我不确定它是否会捕获每一个未处理的异常。