我的程序在加载序列化文件的部分遇到问题。如果文件无法反序列化,我希望很好地失败,但由于某种原因,我的程序将中断而不是进入 catch 子句。这是我的代码
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 调试器在所有异常上中断,即使它们位于 try/catch 块中。
如果在调试器到达断点后按 F10 继续,您应该会看到它进入 catch 块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)