我在加載序列化文件的部分中遇到了問題。如果文件不能反序列化,我想很好地失敗,但由於某種原因,我的程序會中斷而不是進入catch子句。這是我的代碼C#無法捕獲SerializationException
using (FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open))
{
try
{
BinaryFormatter bf = new BinaryFormatter();
document = (Document)bf.Deserialize(fs);
}
catch (SerializationException se)
{
MessageBox.Show("Error opening this file due to serialization", se.Source);
}
catch (Exception se)
{
MessageBox.Show("Error opening this file due to serialization", se.Source);
}
}
運行這會導致程序在Deserialize()行上中斷。這是它拋出異常:
Type 'Source' in Assembly 'DocumentDesigner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
我知道如何解決的例外,因爲我註釋掉一對夫婦[Serializable接口]屬性來測試這一點,但我只是想知道爲什麼try子句不工作。
所以你在調試模式下運行程序?您正在使用Visual Studio?你能否將調試器設置爲在所有第一次機會異常時中斷? – YWE 2010-10-21 14:22:00
您是在調試器/ VS 2010中運行代碼嗎?你不應該 - 否則基於設置調試器可能會提示你。另外,你確定你遇到的異常是SerializationException嗎? – VinayC 2010-10-21 14:23:39
這是問題所在。我已經更改了調試器來打破Debug-> Exceptions中的所有CLR異常。取消選中該框可以讓catch子句捕獲它。謝謝 – wangburger 2010-10-21 14:30:43