2017-03-17 21 views
1

我有以下類。如何獲得空參考分析結果到日誌文件中

class Tim 
{ 
    public Tim() 
    { 

    } 

    public Tom GetTom() 
    { 
     return new Tom(); 
    } 

} 

class Tom 
{ 
    public Tom() 
    { 

    } 

    public Jim GetJim() 
    { 
     return new Jim(); 
    } 
} 

class Jim 
{ 
    public Jim() 
    { 

    } 

    public Jom GetJom() 
    { 
     return null; 
    } 
} 

class Jom 
{ 
    public Jom() 
    { 

    } 

    public string GetMagicString() 
    { 
     return "Hello World"; 
    } 
} 

它的用法如下。

class Program 
{ 
    static void Main(string[] args) 
    { 
      new Tim().GetTom().GetJim().GetJom().GetMagicString(); 
    } 
} 

當我運行它,一個空引用異常被拋出如下新的空引用分析在新的異常助手精美結果表明。

enter image description here

這是偉大的,因爲它清楚地表明我這方法調用這個鏈條負責例外。但是,如果這段代碼在字段中運行,我還想在日誌文件中記錄此錯誤。爲此,當我在捕獲塊中捕獲NullReferenceException時,我沒有收到有關返回null的方法的信息。這是否僅在VS異常助手對話框中可用,並且此時不能記錄?

回答

3

這是僅在VS異常幫助對話框中可用的東西,並且此時不能記錄?

是的,這是隻在Visual Studio的例外幫助器中可用的東西,不能在此刻記錄。

這不是不可能的,但是您必須使用與Visual Studio調試器相同的功能來測試代碼。在一個正常的,未檢測到的情況下,沒有空引用實際來源的記錄,因此您的登錄輸出無法提供該信息。

+0

您可以詳細說明與Visual Studio調試器功能相當的儀器代碼嗎?我的意思是如何做到這一點,並鏈接到任何示例/樣本。 –

+0

@ jimcrown:對不起,我不能詳細說明。這將是一個令人難以置信的廣泛問題,不僅僅是編寫一個全新的調試器,而且還增加了這個高級功能(我不知道VS團隊如何實現它......最有可能的是他們利用了現有的IntelliTrace功能,或者他們現在做一些實際的代碼檢查/反編譯追溯以查找空引用的來源)。 –