处理未授权服务中的异常

本文关键字:异常 服务 授权 处理 | 更新日期: 2023-09-27 18:00:51

编辑:请注意,这与我之前的问题无关。这是另一个主题。

我正在编写一个应用程序,大约每30秒运行一次,以便在数据库中完成一些未授权的工作。它完全不需要监督或用户/管理员交互。但是,它需要在其App.config文件中正确定义某些参数,并且在应用程序启动时可以访问数据库。此外,所有可能发生的异常都需要记录下来,但程序可以很好地退出,因为它将在。。。在这个时间间隔内,唯一需要做的就是确保数据库是可访问的,并且所有参数都是正确的。也就是说,在方法DoWork()中对整个行为进行编码,而不在方法内部进行任何异常处理,然后将其放入Main()方法中,这是否可以接受/正确?

try
{
     DoWork();
}
catch (Exception ThisException)
{
    /* Log exception. */
}

处理未授权服务中的异常

对于大多数示例来说,这应该是可以的。就像上面所说的,关闭数据库连接并清理已使用的资源并不是一件可以跳过的事情。保留打开的文件句柄可能很糟糕,并阻止新的运行。

此外,还有一些致命的异常(OutOfMemory、RunTimeException等(应该被记录或引发某种形式的警报。

这取决于DoWork()的作用。

例如,如果您正在打开和关闭文件或数据库连接,则需要特定的错误处理来安全地处理这些资源。

不过,进行这样的"一网打尽"尝试接球肯定没有坏处。

错误处理需要是特定的。如果您预计您的配置可能是错误的,请在那里进行检查,而不是抛出异常。如果需要抛出异常,请写一个try。。。专门捕捉。如果配置错误,你想怎么办?关闭服务?是否使用默认设置?

catch-all可能很危险,因为CLR抛出并捕获的任何异常都将在该块中捕获。如果你发现了一个异常,那么你的想法就是用某种方式来处理它。如果该异常是内存不足异常,会发生什么情况?文件IO?还是DB?

一些MSDN文章来备份我所说的:

http://msdn.microsoft.com/en-us/library/xtd0s8kd.aspx

http://msdn.microsoft.com/en-us/library/seyhszts.aspx