为啥 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 中断

Selenium入门19 捕获异常

在 Visual Studio 2019 中处理异常

为啥单击按钮时会出现 NSUnknownKeyException?