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