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