2012-06-25 37 views
0

我正在構建一個庫,其中包含大量用於各種代碼的包裝器,我使用了很多。從庫中調用的異常拋出異常

我的圖書館代碼:

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"); 

拋出異常的地方會高亮顯示該行,即使throwDirectory類。

任何幫助表示讚賞。

編輯

如果我的庫複製到不同的位置,即C:\在MyLibrary它仍然會打開它的源代碼,即使我沒有引用它通過一個項目。

我發現的另一個問題是,當我沒有從我的項目中添加它時,我在功能上看不到我的XML註釋。

任何想法?

回答

3

您可以通過使用程序集引用而不是庫的項目引用來實現此目的。這樣你就不會在消費項目中擁有庫的源代碼,並且VS將在AwesomeFunction.Create函數調用中斷開。當您提供的Directory.Delete調用中出現異常時,會發生這種情況。既然你沒有鏈接這個方法的源代碼,VS只停留在這一行,而不是在拋出異常的這個方法內部的實際行上。很顯然,在異常堆棧跟蹤中,您將獲得完整的方法調用堆棧和異常的來源。

+0

糟糕,對不起,我仍在運行測試中的'Directory.Delete'代碼。我刪除了引用,並使用從VS而不是項目選項卡瀏覽添加庫。當運行我的功能時,我得到一個說源代碼不可用的頁面。我是否添加了引用錯誤? –