如何在Windows .NET服务中进行错误处理

Chr*_*ris 3 .net windows-services

这感觉就像之前可能已被问到的一个问题,但我找不到它,所以我想(可能再次).

我正在编写一个Windows服务来进行一些文件监控和处理.它完全按照我的要求行事,但我知道在对文件系统或事件日志进行读/写操作时,我的代码可能会出现几个错误.我准备加入一些尝试/捕获,我希望有错误,但我想做一些全局错误处理来获取所有那些不可预见的问题.我不知道该怎么做.

我的第一个想法是寻找某种类似于我在ASP.NET项目中找到的全局错误处理程序,但在这些行中看不到任何东西.

另一个想法是我可以获得所有顶级函数调用并在它们周围放置一个try/catch.正如我所看到的那样,这意味着在我的所有事件处理程序代码和我的服务Start和Stop方法中放置一个try/catch.这不是一种好方法,所以我想我可能以错误的方式接近这个.任何人都可以建议我在错误处理方面应该做些什么吗?

我假设在一个服务中我不希望它只是抛出错误,因为它可能会停止服务,或者我实际上应该让服务崩溃并通过我见过的恢复机制自动重启它?

我在这里很不确定所以请与我分享你的智慧...... :)

Dav*_*art 6

将try/catch放在服务的main方法中并记录错误以便修复它们没有问题.如果捕获的错误是意外的,那么您可以干净地关闭服务.

此外,除了主要的try/catch之外,您还必须为每个可能无法避免发生的异常(即网络问题)添加try/catch,以便您可以采取相应措施以恢复应用程序的正确行为,从而避免崩溃的服务.

最后,请记住,您必须为每个不同线程的每个top方法执行此操作,因为异常不会传播到线程范围之外.