【问题标题】:How to temporarily deactivate all try / catch blocks?如何暂时停用所有 try / catch 块?
【发布时间】:2008-12-07 21:37:50
【问题描述】:

是否有可能像单击按钮一样简单地停用/激活整个项目中的所有 try catch 块?

当我不希望 catch 块处理异常时,我需要它来进行调试,而是更喜欢 VS 中断代码,就好像 try catch 块不存在一样。

目前我正在注释掉 try/catch 块,但这效率低下。

环境:VS 2008,以 C# 为语言。

【问题讨论】:

  • 目的是什么?你为什么要这样做?
  • 为什么你们会因为有人提出问题而如此不安?如果您等待 5 分钟,您会看到是否有人提出了超出您预期的有用答案。

标签: visual-studio


【解决方案1】:

在异常被抛出的那一刻捕获异常(Win32 术语中的“第一次机会异常”):

  • 在 VS2008 中:转到 DebugExceptions...

  • 由 VS2015:这已移至 Debug > Windows > Exception Settings

然后为Common Language Runtime Exceptions选中Thrown框。

【讨论】:

  • 我相信这正是 OP 想要通过禁用所有尝试捕获来实现的。
【解决方案2】:

无法停用 try/catch 块。

但是,出于调试目的,如果您想在引发特定类型的异常时立即中断,您可以让 Visual Studio 执行此操作(调试 -> 异常;选择您感兴趣的异常类型并检查“投掷”框)。

【讨论】:

  • 我有一个原因:有严重的错误消息抑制(客户端对各种 .net 错误页面过敏),几个月后我需要在开发附加部分的过程中调试页面。跨度>
  • 诚然,这可能是一个极端情况,但我现在的情况是,我必须在同一个代码库中针对 Excel 2007 和 2013 进行开发,这意味着我必须使用 VS2012。这也意味着我对 Excel 2013 的调试必须使用已编译的代码,因为 VS 2012 不会附加到 Excel 2013 进行调试。我现在很想快速禁用我的 try/catch 块...
  • @squillman:我完全不清楚“针对 Excel 2007 和 2013 进行开发”与禁用 try/catch 块有什么关系...
  • 是的,我当然可以更好地解释这一点。我有一个插件需要在 2007 年和 2013 年都可以工作,所以我必须在 VS2012 中开发。我有一个异常被抛出,但仅在我无法调试的 Excel 2013 中。乱码的 catch 块使得很难找到真正的异常是什么以及在哪里......
  • 但同样,边缘情况,对于 R# 或任何人来说可能不是一个很好的论据,以便很快禁用 Try/Catch 功能。
【解决方案3】:

今天想到了这个,找到了另一个解决方案。这样做的好处是 IDE 将在发生异常的确切点停止。

全局定义的某个地方:

Namespace Global.System
  Public Class NeverOccurException
    Inherits Exception
  End Class
End Namespace

每个源代码文件的开头:

#If DEBUG
  Imports CatchAtReleaseException = System.NeverOccurException
#Else
  Imports CatchAtReleaseException = System.Exception
#End If

用法:

  'Compiled in DEBUG-Mode the TryCatch is "disabled", because the
  'the ALIAS CatchAtReleaseException is set to "NeverOccurException"

  'Compiled as RELEASE the TryCatch is "enabled", because the ALIAS
  'is set to the regular "System.Exception"

  Public Sub SampleSub()
    Try
      '...
    Catch ex As CatchAtReleaseException
    End Try
  End Sub

玩得开心, 问候, 泰德

【讨论】:

    【解决方案4】:

    如果您想在 IDE 中执行,Debug -> Exceptions 是一个对话框,您可以在其中要求 IDE 在引发特定/类别/所有异常时中断。

    【讨论】:

      【解决方案5】:

      您可以更改发生异常时 Visual Studio 中断的方式。默认情况下,它会在未处理的异常上中断。如果您转到菜单 Debug > Exceptions,您可以取消选中 Common Language Runtime Exceptions 并在发生异常时对 IDE 的行为进行其他更改。例如,你可以让它只在一种异常上中断;那里有很长的清单。

      我在尝试调试时很少这样做。

      【讨论】:

        猜你喜欢
        • 2012-04-03
        • 2010-12-15
        • 2011-07-09
        • 1970-01-01
        • 2023-03-07
        • 2011-06-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        相关资源
        最近更新 更多