我需要一些建议。
我有在夜间运行的 Windows 服务。在我的开发环境中,它无一异常(exception)地运行,但是当我在“安装在其他机器上”运行它时,当我早上来的时候,我受到了 System.Overflow 异常的欢迎,它说我已经将 int32 设置为太大或太小的值。
我仔细梳理了该服务的 c# 代码,并且我对所有内容都有 try/catch 语句,它们应该捕获任何错误并将其写入日志,而不会因此溢出异常而完全停止我的服务。但它仍然会发生并停止服务。
对于如何查明导致此类错误的原因的任何概念性建议,我将不胜感激。
最佳答案
在整个代码中添加 try/catch
block 的问题是很容易遗漏某个地方,因此不会记录异常。一种更可靠的方法是使用值 AppDomain.UnhandledException
。这将针对当前 AppDomain
中未处理的任何异常触发。您可以 Hook 它以写入您的日志文件,并希望更好地了解错误的来源
AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
...
void OnUnhandledException(object sender, UnhandledExceptionEventArgs e) {
// Log the exception here
}
关于c# - System.Overflow 异常 - int32 太大或太小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2567211/