变量'MyException'已声明但从未使用过

时间:2011-06-23 14:26:05

标签: c# .net exception frameworks ambiguity

我需要清除此警告:

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

编者告诉我:

  

声明变量'MyException'但从未使用过

我该如何解决这个问题。

6 个答案:

答案 0 :(得分:125)

  1. 您可以将其删除:

    try
    {
        doSomething()
    }
    catch (AmbiguousMatchException)
    {
        doSomethingElse()
    }
    
  2. 使用警告禁用,如下所示:

    try
    {
        doSomething()
    }
    #pragma warning disable 0168
    catch (AmbiguousMatchException exception)
    #pragma warning restore 0168
    {
        doSomethingElse()
    }
    
  3. 其他熟悉的警告禁用

    #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.
    

答案 1 :(得分:35)

您为异常MyException声明了一个名称,但是您从不对它做任何事情。由于它没有被使用,编译器会指出它。

您只需删除名称即可。

catch(AmbiguousMatchException)
{
   doSomethingElse();
}

答案 2 :(得分:23)

您可以简单地写一下:

catch (AmbiguousMatchException)
如果你不在catch子句中使用它,那么

并省略异常名称。

答案 3 :(得分:2)

问题是,您没有在任何地方使用变量MyException。它被声明,但没有被使用。这不是问题......只是编译器会给你一个提示,以防你打算使用它。

答案 4 :(得分:2)

如果你有一个正在运行的日志,你可以将异常写出来。可能有助于追踪任何问题。

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

答案 5 :(得分:0)

but never used意味着您应该在catch()之后使用它,例如将其值写入控制台,然后该警告消息将消失。

catch (AmbiguousMatchException MyException)
{
    Console.WriteLine(MyException); // use it here
}