2011-04-19 30 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指令将恢复为全局设置(打开或关闭),并且它位于其围绕的代码的本地。