YAX シリアライザー (現在の NuGet バージョン) を使用しています。このコードを実行すると:
void Main()
{
try
{
int zero = 0;
int result = 100 / zero;
}
catch (DivideByZeroException ex)
{
LogSaveException(ex);
}
}
public void LogSaveException(object value)
{
try
{
YAXSerializer serializer = new YAXSerializer(value.GetType());
string loggedString = serializer.Serialize(value);
Console.WriteLine(loggedString);
}
catch (StackOverflowException)
{
Console.WriteLine("Log Error", "Could Not Log object of type "
+ value.GetType().ToString() +" due to stack overflow.");
}
catch (Exception)
{
Console.WriteLine("Log Error", "Could Not Log object of type "
+ value.GetType().ToString());
}
}
アプリは次の行で終了します。string loggedString = serializer.Serialize(value);
発生する可能性のある例外をキャッチしようとしました。しかし、アプリはすぐに終了します。
LinqPad で実行してみましたが、LinqPad がクラッシュしました。LinqPad のクラッシュをデバッグしようとしました (ソースがありませんが、そこから情報を取得できる場合もあります)。それを行ったところ、StackOverflowException があったとのことでした。しかし、私のキャッチステートメントはそれをキャッチしませんでした。
そのような完全な死を引き起こすのは何ですか?どうすれば防げますか?