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

时间:2011-06-28 10:37:40

标签: c# .net windows-services

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

2 个答案:

答案 0 :(得分:3)

听起来我觉得你试图以错误的方式解决问题......

当您的程序(或服务)由于未处理的错误而崩溃时,解决方案是不弄清楚“处理”所有未处理错误的位置和方式,以便您可以忽略它们并继续执行。我更清楚地看到了这个观点in this answer,但简短的版本是当你遇到未处理的异常时,正确的做法是崩溃。正如原答案所引述:

  

发生未处理的异常这一事实意味着服务器处于意外状态。通过捕获异常并说“不要担心,这一切都很好”,最终导致服务器运行损坏。

     

[。 。 。 ]

     

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

     

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

事实上,真正的解决方案涉及找出未处理异常的根本原因并修改代码以防止首先发生错误。

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

如果你仍然坚持忽略所有善意的建议,你会发现“坚持你的头脑并忽视它”的方法detailed here

答案 1 :(得分:0)

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