如果我有这样的一行
ContentRepository.Update(existing);
进入数据存储库以更新某个对象,我在这个Update函数中有一个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来到那条线,然后我就在那条黄色的线上,我按下Stop。
显然会发生什么,VS去执行Update()方法,并以某种方式找出出错的东西并进入“catch”并删除文件,这是错误的,因为我希望我的捕获工作当有一个真正的异常,不是在我调试程序并强制停止它时。
答案 0 :(得分:0)
这取决于调试器分离是否结束了该过程。如果没有,则程序将继续运行。如果确实如此,则不会。