如果我有这样的台词
ContentRepository.Update(existing);
它将进入数据存储库以更新某些对象,我在此更新函数中有一个try..catch块,如下所示:
string file = XmlProvider.DataStorePhysicalPath + o.GetType().Name + Path.DirectorySeparatorChar + o.Slug + ".xml";
DataContractSerializer dcs = new DataContractSerializer(typeof (BaseContentObject));
using (
XmlDictionaryWriter myWriter =
XmlDictionaryWriter.CreateTextWriter(new FileStream(file, FileMode.Truncate, FileAccess.Write),
Encoding.UTF8))
{
try
{
dcs.WriteObject(myWriter, o);
myWriter.Close();
}
catch (Exception)
{
// if anything goes wrong, delete the created file
if (File.Exists(file))
File.Delete(file);
if(myWriter.WriteState!=WriteState.Closed)
myWriter.Close();
}
}
那么,如果我在上面一行的调试会话中单击“停止”,Visual Studio为什么还要继续调用update()?
例如,我是通过按F10一行一行地走到那一行的,现在我在那一行,那一行是黄色的,我按停止键。
显然,发生的是,vs执行update()方法,不知何故发现了错误,进入“catch”并删除文件,这是错误的,因为我希望在出现真正的异常时(而不是在调试程序并强制停止程序时)使用catch。