2010-04-20 90 views
0

如果我有這樣的當你停止VS調試器時會發生什麼?

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在有一個真正的例外不是當我調試一個程序,並強制停止它。

回答

0

這取決於調試器分離是否結束該過程。如果沒有,那麼該程序將繼續運行。如果是這樣,那麼它不會。

+0

這是從ASP.NET MVC應用程序,它應該結束過程?目前,我的瀏覽器窗口保持打開狀態。我沒有這樣配置,這是默認的。 – mare 2010-04-20 13:13:39

+0

@mare:在這裏,當我將Firefox作爲默認瀏覽器時,它不會結束這個過程。它用於IE。我認爲這可能是一個設置的地方;但我通常更喜歡它*不會結束這個過程,所以我沒有看過它。 – 2010-04-20 13:45:58

+0

我可以確認這是瀏覽器依賴於我的身邊。 – mare 2010-04-26 17:49:29

相關問題