【问题标题】:Visual Studio ignore try catch - debug onlyVisual Studio 忽略 try catch - 仅调试
【发布时间】:2010-03-11 17:54:23
【问题描述】:

我认为错误处理是个好主意。 :) 调试时可能会妨碍 - 尤其是在用户友好的消息中。在 VB6 中,我可以只选中一个框让编译器忽略我的错误处理。我 found 允许我在 VS 中执行类似操作的对话框,但它大约有 10,000 个复选框而不是一个 - 每次我想要生产编译时都无法更改。

有没有办法设置 VS,所以当我处于调试模式时,我会得到一组条件,而当我在生产中时,我会得到另一个条件? ...或者是否有另一种更有效地处理错误和调试的方法?

谢谢

【问题讨论】:

标签: asp.net visual-studio-2008 debugging


【解决方案1】:

尝试调试菜单并查看异常。您可以将其设置为在引发异常时自动中断。

【讨论】:

    【解决方案2】:

    在代码中,我可能会这样做:

    #if !DEBUG
        try {
    #endif
            DoSomething();
    #if !DEBUG
        } catch (Exception ex) {
            LogEx(ex);
            throw new FriendlyException(ex);
        }
    #endif
    

    或者。更普遍,更少#if

    #if DEBUG
       public const bool DEBUG = true;
    #else
       public const bool DEBUG = false;
    #endif
    
    try {
       DoSomething();
    } catch (Exception ex) {
       if (DEBUG) throw;
       LogEx(ex);
       throw new FriendlyException(ex);
    }
    

    或者,一般用途(如 P&P 的异常处理库):

    bool HandleException(Exception ex) {
        return !DEBUG;
    }
    

    但是,如果您真正的问题只是 Visual Studio GUI - just use a macro

    【讨论】:

      【解决方案3】:

      您可以将此属性添加到您的方法中:

      [Conditional("DEBUG")]
      

      如果您愿意,也可以使用 #if #endif 语句。

      【讨论】:

      • 这会使代码非常丑陋;在 VS.Net 中有更好的方法来处理这个问题。
      • +1 我同意#if 会产生丑陋的代码,我认为属性方法不会,但它是有限制的。
      猜你喜欢
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多