1

我有一个应用程序抛出的情况,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 ..但我不明白为什么我看不到它。

4

0 回答 0