stackoverflowexception,发生类型为 System.StackOverflowException 的异常
stackoverflowexception,发生类型为 System.StackOverflowException 的异常详细介绍
本文目录一览: System.StackOverflowException 异常
发生类型为 System.StackOverflowException 的异常。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.StackOverflowException: 发生类型为 System.StackOverflowException 的异常。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[StackOverflowException: 发生类型为 System.StackOverflowException 的异常。]
C#程序调试时出现stack overflow exception该怎么解决
首先,你确定你的程序是否写了
死循环
其次,调试模式下,为了防止你出现死循环,IDE会有保护,即当方法栈超过多少以后就抛出错误
如果你确信这里没死循环的话有两种方法
1、发布后运行(非调试)
2、调试/异常/common
language
runtime
exception
/system/system.stackoverflowexception,把后面的钩全去掉
System.StackOverflowException是什么意思
很明显是死循环了啊。。。set方法被无限调用了。为什么会死循环:你给ParentId赋值,就会调用 Set{ ParentId = value}然后set 里面的ParentId又会调用Set{ ParentId = value} 这不死循环了么?正确的做法:写成下面:Public int ParentId { get ; set; } 或者: private int _parentId ; Public int ParentId { get { return _parentId;} set { _parentId = value;} }其他的属性也都错了,都要改过来。get方法也是。
StackOverflowException 是指待定的方法调用太多,导致执行堆栈溢出
代码里的堆栈溢出。
调试看看边界条件是不是设置错了。如果是网页上显示这个,那就是这个网站奔溃了,工程师水平不高。
堆栈溢出
有没有死循环
StackOverflowException 是指待定的方法调用太多,导致执行堆栈溢出
看有没有死循环或者递归
检查你写的代码
未处理的“System.StackOverflowException”类型的异常出现在 system.windows.forms.dll 中。
发生类型为 System.StackOverflowException 的异常。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.StackOverflowException: 发生类型为 System.StackOverflowException 的异常。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[StackOverflowException: 发生类型为 System.StackOverflowException 的异常。]
“System.StackOverflowException”类型的未经处理的异常出现在 System.Windows.Forms.dll 中。
你代码无限循环了,你在form1中有new Calculate.Calculate();
然后在Calculate中又有new Form1();最终就是一个无限实例化的循环过程。
其实完全没必要做这做,你的Calculate只是单纯的计算,所以完全可以将public void calculate更改为比如public static string calculate,然后Calculate中也不涉及任何对form1操作,在form1中调用的时候就可以不用实例化Calculate,直接写
textBox1.Text=Calculate.calculate(参数);
发生类型为 System.StackOverflowException 的异常
库文件可能被破坏了,也可能是程序被病毒破坏了。
调用此方法的代码如下:
void LoadTree(TreeView treeView)
{
LevelInfo level = new LevelInfo();//
level.Id = 0;
TreeNode node = new TreeNode("root");
GetSubNode(node, level);
foreach (TreeNode subNode in node.Nodes)
treeView.Nodes.Add(subNode);
treeView.ExpandAll();
}
void GetSubNode(TreeNode pNode, LevelInfo pLevel)
{
List
levelList = Level.GetSubLevel(pLevel);
List
nodeList = new List
();
foreach (LevelInfo level in levelList)
{
TreeNode node = new TreeNode(level.Name);
node.Tag = level.Id;//每个节点的数据库id
pNode.Nodes.Add(node);
nodeList.Add(node);
}
for (int index = 0; index < levelList.Count; index++)
{
GetSubNode(nodeList[index], levelList[index]);
}
}
注:
LevelInfo 为自定义的用于存储某一个级别的节点的信息的,属性有id(节点的编号)、pid(父节点的编号)、name(节点的名字)。开发软件为Microsoft Visual Studio 2005
C#自己写了一个类,但是在实例化对象时出现StackOverflowException错误
你要先定义属性(字段):private string Name="***";
然后在封装属性(字段):
public string Name
{
get { return name; }
}
因为你是封装属性(字段)!所以你要先定义属性(字段)
你是不是没有私有化Name啊。
private string Name="N/A";
你试试可以吗,还有你写没写set方法。
你在属性里返回属性自身,那肯定造成无限循环了 然后堆栈溢出...
private string name;
public string Name
{
get { return name; }
}
递归算法,总是报堆栈溢出StackOverflowException,运行简单的实例没有问题,当循环达到千万次左右就不行
声明的私有变量过大或过多了(静态变量不算私有),WINDOWS只为堆栈分配1M的私有空间,满了就溢出(我记得好像是1M,要不就是2M),当然,C#用的是托管内存,所以应该可用空间会略小些
vs2010 stack overflow 说是堆栈溢出了,这是怎么回事
在编有递归代码的VS、VC程序中可能会引起栈溢出错误,其实代码本身并没有出错,只是系统分配的栈内存不满足程序需要。
错误提示如下:
First-chance exception at 0x00AFE289 in 边缘检测方法.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x00F92FEC).
If there is a handler for this exception, the program may be safely continued.
工具/原料
VS2013
方法/步骤
打开出现栈溢出错误的工程文件,单击下图中的调试运行按钮
运行后会弹出如下的栈溢出错误窗口,单击“break",即中断执行
中断执行后会跳转到出现错误的代码段,即引起栈溢出的地方。
此时打开栈的调用窗口可以发现代码调用的栈太大了,超过了系统默认给定的容量。所示下图中出现了读取内存失败错误。
打开此工程的属性页面,找到”Link“——”System“,如下图所示
在栈的调用尺寸中填写一个较大的值,比如1000000,如果还不够就再加大点,应用并退出设置。
7
再次编译运行代码,栈溢出错误即可以解决了。我的输出结果如下所示。
未处理的“System.StackOverflowException”类型的异常出现在 mscorlib.dll 中
栈溢出,往往是出现无限制的递归导致的,函数调用层次过多导致栈溢出。检查是否有意外的递归调用或函数调用。