我遇到一个案例,其中应用程序正在抛出NullReferenceException
,关闭我的应用程序抛出StackOverflowException
。
第一个例外是合乎逻辑的,我理解它。它不是由用户处理的,我希望转到AppDomain.CurrentDomain.UnhandledException
。
但是不行,StackOverflowException
在NullReferenceException
之后立即被解雇,我的应用程序关闭了。
我不明白StackOverflowException
的原因,因为此时调用堆栈的最大堆栈并不大(~15行)。
情况的特殊性在于我在一个委托中,该委托订阅了控件的VisibleChanged
事件处理程序。
以下是重现问题的示例。
public Form1()
{
InitializeComponent();
VisibleChanged += Function();
}
private EventHandler Function()
{
throw new NullReferenceException();
}
事实上,当我在做样本时,我想我得到了这个问题。在Visible Changed事件中抛出异常似乎改变了可见性,并且有一个递归调用(我奇怪地看不到)谁涉及到stackoverflow ..但我不明白为什么我看不到它。