我正在使用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。但是我的捕获声明没有抓住它。
什么会导致这样的总死亡?我如何防范它?
简单。谨防递归。 – spender 2013-05-01 22:43:42