Outlook 插件中的 StackOverFlow 异常
StackOverFlow Exception in Outlook Addin
我是编程世界的新手,正在尝试重构一个 Outlook 插件,其中所有代码都是用 ThisAddIn.cs 编写的,即自动生成的文件。我已将 ThisAddIn 的内容分成几个 class,但是当我调试我的应用程序时,抛出了 Whosebug 异常。这种问题的原因可能是什么?
一般来说,WhosebugException
表示某些代码进入了死循环。考虑下面的示例,它永远不会终止。假设 Main
是您的应用程序(即 Outlook 插件)的入口点,然后方法 A
和 Main
将继续相互调用,直到发生 WhosebugException
。
public void Main()
{
A();
}
public void A()
{
Main();
}
如果您可以 运行 在 Visual Studio 中处于调试模式的应用程序,它通常会告诉您 WhosebugException
发生的堆栈跟踪。使用该信息应该可以追踪错误。
这通常是由递归函数(例如由于误用或 "bad" 停止条件)或不断相互引发的事件引起的。
最常见的原因是递归函数:调用自身的函数。
有关故障排除提示,请参阅此内容:How do I prevent and/or handle a WhosebugException?
调试时,您希望在调用堆栈变得非常大时pause/halt 执行代码,然后问题就会显现出来。这是一个例子,如果你用大数字调用这个函数,你会得到一个 Whosebug 异常:
private long Multiply(int x, int y)
{
x+=y;
y--;
if (y==0) return x;
return Multiply(x,y);
}
我是编程世界的新手,正在尝试重构一个 Outlook 插件,其中所有代码都是用 ThisAddIn.cs 编写的,即自动生成的文件。我已将 ThisAddIn 的内容分成几个 class,但是当我调试我的应用程序时,抛出了 Whosebug 异常。这种问题的原因可能是什么?
一般来说,WhosebugException
表示某些代码进入了死循环。考虑下面的示例,它永远不会终止。假设 Main
是您的应用程序(即 Outlook 插件)的入口点,然后方法 A
和 Main
将继续相互调用,直到发生 WhosebugException
。
public void Main()
{
A();
}
public void A()
{
Main();
}
如果您可以 运行 在 Visual Studio 中处于调试模式的应用程序,它通常会告诉您 WhosebugException
发生的堆栈跟踪。使用该信息应该可以追踪错误。
这通常是由递归函数(例如由于误用或 "bad" 停止条件)或不断相互引发的事件引起的。
最常见的原因是递归函数:调用自身的函数。
有关故障排除提示,请参阅此内容:How do I prevent and/or handle a WhosebugException?
调试时,您希望在调用堆栈变得非常大时pause/halt 执行代码,然后问题就会显现出来。这是一个例子,如果你用大数字调用这个函数,你会得到一个 Whosebug 异常:
private long Multiply(int x, int y)
{
x+=y;
y--;
if (y==0) return x;
return Multiply(x,y);
}