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