78

我需要清除此警告:

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

编译器告诉我:

变量“MyException”已声明但从未使用

我怎样才能解决这个问题。

4

6 回答 6

152
  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.
于 2011-06-23T14:27:40.857 回答
42

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

您可以简单地删除名称。

catch(AmbiguousMatchException)
{
   doSomethingElse();
}
于 2011-06-23T14:27:41.793 回答
28

你可以简单地写:

catch (AmbiguousMatchException)

如果您不会在 catch 子句中使用它,请省略异常名称。

于 2011-06-23T14:28:19.297 回答
3

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

Log.Write("AmbiguousMatchException: {0}", MyException.Message);
于 2011-06-23T15:04:08.510 回答
2

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

于 2011-06-23T14:28:30.303 回答
0

but never used意味着你应该在 catch() 之后使用它,例如将它的值写入控制台,然后这个警告信息就会消失。

catch (AmbiguousMatchException MyException)
{
    Console.WriteLine(MyException); // use it here
}
于 2018-10-08T18:42:11.697 回答