2011-06-23 43 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

将在哪里存储错误消息? –