gpt4 book ai didi

c# - 在 try-catch : bad practice? 中包含服务执行

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:19 31 4
gpt4 key购买 nike

下面是一个windows服务程序的常规Program.cs内容:

static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyService()
};
ServiceBase.Run(ServicesToRun);
}
}

ServiceBase.Run(...) 包含在 try-catch block 中是一种不好的做法吗?

谢谢。


编辑:

进行了一些测试,发现(测试方法:向服务发送自定义命令,在OnCustomCommand覆盖中抛出ApplicationException):

一个。在 try/catch 中包含 ServiceBase.Run() 不会捕获 OnCustomCommand 中抛出的异常,因为当服务线程开始执行时 try block 已经在范围内。因此,质疑这种方法的正确性是无关紧要的,只要它无论如何都不能满足其目的。

B.为 AppDomain.CurrentDomain.UnhandledException 添加处理程序也没有捕获异常。

但是,在这两种情况下,Windows 事件日志中都会出现异常。这几乎解决了我在服务执行期间知道什么时候崩溃的需要,但问题仍然存在:是否存在服务可能悄无声息地崩溃而事件日志中没有任何痕迹的情况?

最佳答案

这取决于你在做什么。如果您打算处理异常并对它们做一些有用的事情(例如重试、运行备份、通知用户并征求反馈等),那么在我看来,我认为这不是一个坏习惯。

正如我所说,这取决于你在做什么。

关于c# - 在 try-catch : bad practice? 中包含服务执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2801281/

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