2015-10-28 55 views
0

我是一个编程世界的新手,并试图重构Outlook Addin,其中所有代码都是在ThisAddIn.cs中编写的,即自动生成的文件。我将ThisAddIn的内容分隔到几个类中,但是当我调试我的应用程序时,会引发StackOverflow异常。造成这种问题的原因是什么?Outlook Addin中的StackOverFlow异常

+1

原因通常是调用循环或非预期的递归。尽管没有看到代码,但我们无法告诉你它在哪里或如何修复它。 –

+0

欢迎来到[so]!请查看[faq]并阅读[问]几次。我们确实需要您发布您认为会导致问题的代码以解决问题,否则请在我的答案中查看提示以自行解决问题,祝您好运! –

回答

0

一般而言,StackOverflowException意味着某些代码已进入无限循环。考虑下面的例子,它永远不会终止。想象一下,Main是您的应用程序(即Outlook插件)的入口点,然后方法AMain将继续相互呼叫,直到出现StackOverflowException

public void Main() 
{ 
    A(); 
} 

public void A() 
{ 
    Main(); 
} 

如果你可以运行在Visual Studio调试模式下的应用程序,它通常会告诉你从StackOverflowException发生在堆栈跟踪。使用这些信息应该有可能追踪错误。

它通常是由递归函数(例如由于误用或“坏”停止条件)或不断相互引发的事件引起的。

0

最常见的原因是递归函数:一个调用自身的函数。

故障排除提示,请参阅本:How do I prevent and/or handle a StackOverflowException?

当你调试要暂停/停止执行代码时调用堆栈的增长非常大,那么问题将是可见的。下面是一个例子,如果你用大数字调用这个函数,你会得到一个Stackoverflow异常:

private long Multiply(int x, int y) 
{ 
    x+=y; 
    y--; 
    if (y==0) return x; 
    return Multiply(x,y); 
}