none
再帰によって発生するStackOverflowExceptionがcatchできない RRS feed

  • 質問

  • StackOverflowExceptionを発生させるテストのために次のコードを書きました。

        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    f();
                }
                catch (System.StackOverflowException e)
                {
                    System.Console.WriteLine("StackOverflowException catched.");
                }
                catch (System.Exception e)
                {
                    System.Console.WriteLine("Exception catched.");
                }

            }

            public static void f()
            {
                f();
            }
        }

    これを実行するとStackOverflowExceptionがキャッチされずに「未処理の例外ダイアログボックス」が表示されます。

    なぜ、このような挙動になるのでしょうか。私は、catch (StackOverflowException e)で例外がキャッチされて"StackOverflowException catched."が表示されて終わると思ったのですが・・・。ご存知の方、ご教授ください。

    なお、 環境は、以下のとおりです。

    Windows XP Professional

    C#: 8.00.50727.42

    Microsoft .NET Framework 2.0.50727

     

     

    2007年3月20日 2:33

すべての返信