我正在使用 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。但我的 catch 语句没有抓住它。
什么会导致这样的完全死亡?我该如何防范?