在从库调用的行上抛出异常

时间:2012-06-25 14:02:30

标签: c# exception exception-handling

我正在构建一个库,其中包含很多用于我使用的各种代码的包装器。

我的图书馆代码:

public static void Create(string name, string location, List<string> commands)
{
    if (!Directory.Exists(location))
    {
        throw new DirectoryNotFoundException();
    }
    else
    {
        File.WriteAllLines(Path.Combine(location, name), commands);
    }
}

我的示例应用程序使用库

AwesomeFunction.Create("Foo", "C:\\DoesntExist\\Bar", new List<string> { "List of stuff" });

如果找不到给定的目录,它会抛出有意义的行throw new DirectoryNotFoundException();,但我需要它来抛出AwesomeFunction.Create函数。

如果它抛出,它将停止切换到库代码,而是突出显示VS中的AwesomeFunction行。

一个类似的例子就是在

上抛出异常
Directory.Delete("C:\\DoesntExist\\Bar");

即使throw位于Directory类中,它也会突出显示该行。

任何帮助表示感谢。

修改

如果我将库复制到另一个位置,即C:\ mylibrary,它仍会打开它的源代码,即使我没有通过项目引用它。

我发现另一个问题是,当我不从我的项目中添加它时,我没有看到我对函数的XML注释。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您可以通过使用程序集引用而不是库的项目引用来实现。这样你就不会在消费项目中拥有库的源代码,VS会在AwesomeFunction.Create函数调用中断。这就是在您提供的Directory.Delete调用中抛出异常时发生的情况。由于您没有链接此方法的源代码,因此VS只会在此行停止,而不会在此方法中的实际行上停止抛出异常。显然,在异常堆栈跟踪中,您将获得完整的方法调用堆栈和异常的来源。