3

我正在使用一些外部代码,当使用某些参数调用它们时会引发可以忽略的异常。不幸的是,由于各种原因,我无法更改此外部代码。

我创建了一个看起来像这样的包装方法:

    [DebuggerStepThrough]
    public static bool TryGetXXX(string input, out string output)
    {
        try
        {
            output = MethodThatSometimesFails(input);
            return true;
        }
        catch
        {
            output = null;
            return false;
        }
    }

    private static string MethodThatSometimesFails(string input)
    {
        // Don't want this to cause a break
        // but can not put the attribute on this method
        throw new Exception("couldnt deal with your request");
    }

不幸的是,外部代码仍然会在内部的异常处中断MethodThatSometimesFails[DebuggerStepThrough]只会避免调试上面的代码,但被调用的代码仍然会抛出。

我想要的是,即使选中了“异常...”窗口上的所有复选框,代码也会运行。有没有可以做到这一点的属性?

如果没有属性,我可以创建一个包含这些类/方法的项目并排除整个项目。有没有办法做到这一点?

4

3 回答 3

1

尝试使用DebuggerNonUserCodeAttribute标记方法或类

于 2012-10-04T20:24:36.033 回答
0

如果您知道有效参数是什么,请在调用函数之前检查它们。如果它们无效,请不要调用该函数。

尽量保持乐观并消除对异常的依赖,这可能代价高昂。

于 2012-10-04T20:02:31.770 回答
0

找不到解决方案。最后唯一的选择是将 TryGet 放入另一个 DLL 中!

于 2012-10-09T15:23:06.050 回答