停止VS调试器会发生什么?

时间:2010-04-20 13:10:41

标签: asp.net debugging

如果我有这样的一行

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”并删除文件,这是错误的,因为我希望我的捕获工作当有一个真正的异常,不是在我调试程序并强制停止它时。

1 个答案:

答案 0 :(得分:0)

这取决于调试器分离是否结束了该过程。如果没有,则程序将继续运行。如果确实如此,则不会。