【问题标题】:An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dllmscorlib.dll 中出现“System.StackOverflowException”类型的未处理异常
【发布时间】:2010-05-06 15:42:36
【问题描述】:

我在 asp.net 中编写了一个从文件中读取数据并绘制图形的代码。

它成功了,但是当我运行程序一段时间后,出现了这个异常

“'System.StackOverflowException' 类型的未处理异常 发生在 mscorlib.dll"

在代码中的这个语句中:

if (File.Exists(fName)) <----(here is the exception)
{
    stream = File.Open(fName, FileMode.Open);
    g_day = Deserialize(stream);
    stream.Close();
    int cn = 0;
    if (g_day.Values.Count != 0)
        cn = g_day.Values[g_day.Values.Count - 1].Value;
    Label1.Text = cn.ToString();
}

【问题讨论】:

  • 使用编辑器的格式功能,以便我们阅读您的代码。
  • 这个代码 sn-p 是您提供的Deserialize() 函数的一部分吗?
  • .NET 的哪个版本?另外,你能发布堆栈跟踪吗?
  • if (File.Exists(...)) 检查是邪恶的。不要这样做。只需打开文件并在打开失败时处理异常即可。
  • @JoelCoehoorn 请问File.Exists 未来有什么问题?

标签: c#


【解决方案1】:

您的函数可能会无限次地递归调用自身。有时这会间接发生(您调用 BCL 中的一个方法,它会回调您的代码,并且不断重复)。 File.Exists 可能不是罪魁祸首。发生错误时查看您的调用堆栈。

【讨论】:

  • 所以她问了就走了!完美答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
相关资源
最近更新 更多