我正在使用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