2011-04-19 71 views
1

我有一個try-catch塊這樣的:爲什麼Real Studio會破壞異常的捕獲?

Try 
    Listbox1.RemoveRow(Listbox1.ListIndex) 
Catch err As OutOfBoundsException 
    MsgBox("Derp") 
End Try 

當我在調試器中運行項目中,我得到確切的線,我試圖抓住一個OutOfBoundsException!爲什麼這不起作用?!?

回答

2

在我看來,調試器會在該行中斷並向您顯示異常。但是,如果你擊中簡歷,它會繼續,捕捉異常,然後顯示消息。

也許他們改變了這個版本的調試器的行爲。

更新:你可以去項目>打破異常改變這種

2

調試器會立即在遇到異常突破,之前的任何其他代碼得到執行。這包括您可能已經放入的任何異常處理代碼,如Try ... Catch塊。

如果您有一些代碼會引發很多異常,並且您不必在每次調試時都要經過它,那麼您有兩種選擇:核和外科手術。

核選項是告訴調試器不要中斷任何異常,這會給應用到整個項目上帶來不幸的副作用,而不是你除了它的一小部分外。

的手術方案是使用pragma directives切換打破異常關閉,周圍的麻煩代碼:

#Pragma BreakOnExceptions Off 
try 
    Listbox1.RemoveRow Listbox1.ListIndex 
catch err As OutOfBoundsException 
    MsgBox "Derp" 
End 
#Pragma BreakOnExceptions On 

這是更爲最好後來乾脆完全關閉調試器的一部分。注意:一旦函數返回,BreakOnExepctions指令將恢復爲全局設置(打開或關閉),並且它位於其圍繞的代碼的本地。