2009-01-06 49 views
2

在VS調試器中,未捕獲的異常導致程序在異常拋出(或接近足夠的程度)時處於中斷狀態,並處於允許您查看所有堆棧幀的狀態並且在那裏有局部變量。抓到的異常被捕獲

有沒有辦法得到這個相同的結果(中斷時拋出),但是在特定點捕獲異常?我對這樣做並不感興趣,因爲所有例外或者甚至是給定類型的所有例外(這可能真的很快就沒用),但是如果我可以爲單個嘗試或catch塊做到這一點,我會很開心

有點相關:

+0

澄清PLZ:你想讓調試器停止對未處理的異常,但只在某些方法?或者你想在你的catch塊內停下來嗎? – jcollum 2009-01-06 23:48:26

+0

@jcollum,nether。我希望調試器在拋出點停止,但只有當異常將在給定位置被捕獲。 – BCS 2009-01-06 23:53:58

+0

導致異常的位置應該在堆棧跟蹤中(不是100%)。這是最好的你會得到。 – jcollum 2009-01-07 00:04:09

回答

5

是否調試 - >例外對話框,你想要做什麼?您可以選擇哪些異常導致VS中斷,而不管它們是否被捕獲。我不知道只能根據拋出的異常的類型爲代碼的某個部分執行此操作的方法。

2

是的,你應該能夠在你的catch塊的最後一個大括號上放置一個斷點。或者如果你正在重擲投擲命令。

如果你只是需要在某個方法內部的任何異常上有一個斷點,那麼重新拋出。

try { } 
catch (Exception exc) 
{ 
    throw; // <-- breakpoint here 
} 

編輯:我曾經習慣於把斷點放在我所有的例外上。發現困難的方式,一旦我達到大約25個斷點,這會大大減慢調試器的速度。可能只與VS2005有關。

Edit2:導致異常的位置應該在exc對象的StackTrace中。