2011-06-23 129 views
55

我需要清除此警告:變量「MyException」聲明,但從未使用

try 
{ 
    doSomething() 
} 
catch (AmbiguousMatchException MyException) 
{ 
    doSomethingElse() 
} 

的編譯器告訴我:

變量「MyException」聲明,但從未使用

我該如何解決這個問題。

+0

使用趕上(例外) –

回答

109
  1. 您可以像這樣刪除它:

    try 
    { 
        doSomething() 
    } 
    catch (AmbiguousMatchException) 
    { 
        doSomethingElse() 
    } 
    
  2. 使用警告禁止這樣的:

    try 
    { 
        doSomething() 
    } 
    #pragma warning disable 0168 
    catch (AmbiguousMatchException exception) 
    #pragma warning restore 0168 
    { 
        doSomethingElse() 
    } 
    

其他熟悉的警告禁用

#pragma warning disable 0168 // variable declared but not used. 
#pragma warning disable 0219 // variable assigned but not used. 
#pragma warning disable 0414 // private field assigned but not used. 
+4

甲所有編譯器的錯誤和警告列表都可以在[MSDN](http://msdn.microsoft.com/en-US/library/ms228296(V = VS。 80).aspx) –

+0

由@ fparadis2給出的解決方案是更好的,因爲不建議當我們修復它時禁止警告 – Rama

+0

@dasariramacharanprasad這是我的第一個建議,重新閱讀我的答案;) –

26

您聲明瞭異常的名稱MyException,但您從不對其執行任何操作。由於沒有使用它,編譯器指出了它。

您可以簡單地刪除名稱。

catch(AmbiguousMatchException) 
{ 
    doSomethingElse(); 
} 
18

你可以簡單的寫:

catch (AmbiguousMatchException) 

,如果你不會的catch子句中使用它省略異常名。

+0

因爲它解決了警告!未在[MSDN](http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=zh-CN&k=k(RETHROWTOPRESERVESTACKDETAILS)中解釋; k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0 %22); K(DevLang-CSHARP)RD =真)。 – Rama

2

麻煩的是,您沒有在任何地方使用變量MyException。它被聲明,但沒有被使用。這不是一個問題......只是編譯器給你一個提示,以防你打算使用它。

2

如果您有一個運行,您可以將異常寫入日誌。可能有助於追蹤任何問題。

Log.Write("AmbiguousMatchException: {0}", MyException.Message); 
+0

將在哪裏存儲錯誤消息? –