2015-07-28 262 views
0

中使用的變量名稱和值進行記錄是否有任何方法來記錄所有變量以及方法中使用的值? 我想查看日誌信息,例如我在方法ErrorWriter中顯示的信息。我不想使用類似ErrorWriter(names, values)的東西。任何人都可以提出解決方案錯誤使用方法

static int number3; 
    static void Main(string[] args) 
    { 
     number3 = 0; 
     Method(1, 2); 
    } 
    static void Method(int number, int number2) 
    { 
     int number4; 
     try 
     { 
      number4 = number/number2/number3; 
     } 
     catch 
     { 
      ErrorWriter(); 
     } 
    } 

    private static void ErroWriter() 
    { 
     /// number = 1 
     /// number2 = 2 
     /// number3 = 0 
    } 

我需要有關使用的變量值的信息。例如。如果我有行號4 =號碼/號碼2 /號碼3。我怎麼知道哪個變量值是0? 2號還是3號?這就是爲什麼我需要確切的價值。我不想爲每種不同的方法硬編碼參數。我需要動態解決方案。

+0

如何編寫異常消息和堆棧跟蹤?你爲什麼需要數字? – demonplus

+0

我需要有關使用的變量值的信息。例如。如果我有行號4 =號碼/號碼2 /號碼3。而我只有堆棧跟蹤。我怎麼知道哪個是0? 2號還是3號?這就是爲什麼我需要確切的價值。 – user2179088

回答

0

我會爲此使用某種方面的編程/攔截。你採取的任何其他方法可能最終會導致低層次或複雜的事情不應該在你正在實施的實際課程。

錯誤處理不一定是您班級的責任人之一,因此可以委託給某個方面。

一個可能的解決辦法是使用某種IoC框架(如UnityNinject,還有很多其他的),並設置類由錯誤處理攔截,這將捕獲異常並記錄參數被攔截這些情況。

This article具有使用Unity可以指向您正確的解決方案

0

正如其他人所指出的,使用標準的錯誤處理例程可能會成爲你比你想在這裏完成什麼更好的例子。

無論如何,您的ErrorWriter方法可能需要一個int[]類型的參數。

chatch 
{ 
    ErrorWriter(new int[3] { number1, number2, number3 }); 
} 

(...) 

private static void ErrorWriter(int[] numbers) 
{ 
    int index = 1; 
    foreach(var i in numbers) 
    { 
     Console.WriteLine("number" + index.ToString() + " = " + i.ToString()); 
    } 
} 
+0

我更新了線程。 – user2179088

0

好像你想在這種情況下避免try/catch。

檢入方法如果您的輸入有效(即數字,數字2和數字3)。如果驗證失敗,則拋出異常。

如果你想要的是能夠確定的一個變量是零(或沒有驗證),拋出異常的檢查類似如下:

private void Method(int number, int number2) { 
    if (number3 == 0) throw new Exception("number3 is zero, resulting in division by zero"); 
    if (number2 + number == 0) throw new Exception("number2 + number is zero"); 
    number 4 = (number2 + number)/number3 
} 

沒有的try/catch需要。這個例外會起泡。 在使用任何方法之前,請務必檢查您的輸入(實例變量和參數)!