为啥 Real Studio 在捕获异常时会中断?
Posted
技术标签:
【中文标题】为啥 Real Studio 在捕获异常时会中断?【英文标题】:Why does Real Studio Break on the Catch of an Exception?为什么 Real Studio 在捕获异常时会中断? 【发布时间】:2011-04-19 04:37:43 【问题描述】:我有一个这样的 try-catch 块:
Try
Listbox1.RemoveRow(Listbox1.ListIndex)
Catch err As OutOfBoundsException
MsgBox("Derp")
End Try
当我在调试器中运行我的项目时,我在我试图捕捉的确切行上得到了一个 OutOfBoundsException!为什么这不起作用?!?
【问题讨论】:
【参考方案1】:在我看来,调试器会在该行中断并向您显示异常。但是如果你点击 resume,它会继续,捕获异常,然后显示消息。
也许他们在这个版本中改变了调试器的行为。
更新:您可以转到 Project > Break on exception 来更改此设置
【讨论】:
【参考方案2】:一旦遇到异常,调试器就会中断,在任何其他代码被执行之前。这包括您可能像 Try...Catch 块一样放入的任何异常处理代码。
如果您有一些代码会引发大量异常,并且您不想每次调试时都单步执行,那么您有两种选择:核能和手术。
核心选项是告诉调试器不要在任何异常上中断,这会产生不幸的副作用,即应用到整个项目而不是你要排除的一小部分。
手术选项是使用pragma directives 在麻烦的代码周围关闭和打开异常中断:
#Pragma BreakOnExceptions Off
try
Listbox1.RemoveRow Listbox1.ListIndex
catch err As OutOfBoundsException
MsgBox "Derp"
End
#Pragma BreakOnExceptions On
这比完全关闭调试器的一部分要好得多。注意:BreakOnExepctions 指令将在函数返回后立即恢复为您的全局设置(打开或关闭),并且对于它周围的代码是本地的。
【讨论】:
以上是关于为啥 Real Studio 在捕获异常时会中断?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在我创建新项目时会在 android studio 中出现此错误?
启用“仅我的代码”时,Visual Studio 2015 JavaScript 调试不会捕获未处理的异常
即使在 C# 代码中处理,InvalidOperationException 也会导致 Visual Studio 中断