2010-04-15 24 views

回答

0

好吧,我會回答我自己的問題,因爲我真的認爲這種功能應該包含在.net IDE的未來中。

想象一下調試代碼,當步進時,一段代碼被突出顯示,右鍵單擊然後選擇拋出異常。下拉列表提供了預定義的異常,或者只是一個通用的新異常。這樣你可以更快地測試代碼,而無需編寫特定的測試用例。

我也不相信編寫測試用例總是可能的。例如,可以說我正在從Web服務請求數據。我想捕獲以下例外:SSL信任失敗,連接被拒絕,404資源未找到。如果有辦法編寫這些測試用例,那麼當你要求的服務不是你自己的時候,我會驚訝的發現。在這些情況下,想象一下,如果您只需介入,在需要的位置點擊鼠標右鍵,選擇拋出新的異常 - 然後通過對話框選擇所需的確切類型異常。 。在這種情況下,您在調試模式下運行一次代碼,每次您想要測試新的異常類型時,只需執行右鍵單擊操作即可。不必停止/啓動調試器,也不需要在整個地方編寫任何臨時拋出異常,這些異常最終需要用於生產版本。

我還會提到你也應該能夠退後一步走出閉鎖段,這是目前不可能,據我所知道的。


不管怎麼說,據我所知引發這樣的異常在動態調試時間的最佳方式 - 是拖放調試位置到一個點,它是依靠代碼前面跑,從來沒有做了,因此使得當前代碼行無效。這是我知道如何做到這一點的唯一方法,所以如果您知道其他方式,請留下更好的答案。

爲了說明我的觀點

  1. 創建目錄
  2. 在迪爾

創建文件如果不運行線1,通過拖動和調試器拖放到2號線,2號線,然後現在將拋出一個異常,因爲現在該目錄不存在,如果代碼已正常運行,該目錄就會存在。

哈哈 - 如果我爲VS團隊工作,你們都會更開心。

+0

如果您希望將其添加爲未來版本的功能,請在Connect上輸入請求,http://connect.microsoft.com/visualstudio/。然後在此發佈您的請求的網址,以便我們可以對其進行投票。 – 2010-04-15 17:28:38

0

我的建議是放在一起這就保證,由於輸入數據的測試案例,該方案將扔你正在尋找的點異常。

你只需要一個try/catch異常時可能被拋出,所以必須有一個地方扔 - 它只是觸發它的情況。

另一種方法是提供某種被稱爲在代碼中,這個行模擬對象,誰是唯一的工作就是扔你需要異常。

1

你是問,如果你可以通過編程導致調試器打破,如果是這樣的話:

Debugger.Break(); 

如果你想在這個調試點拋出異常,如果你已經優化的建立禁用,則可以就地編輯,然後在它後面插入一條throw new Exception();語句,將執行點移動到該行,並跨越該特定行,這將導致調試器跳轉到catch。然後,您可以刪除剛插入的行。如果不插入一些實際的代碼來引發異常,就沒有辦法做到這一點。