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

我需要澄清这个警告:

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

编辑告诉我:

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

我该怎么补救。

61968 次浏览
  1. 你可以像这样移除它:

    try
    {
    doSomething()
    }
    catch (AmbiguousMatchException)
    {
    doSomethingElse()
    }
    
  2. Use warning disable like this:

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

Other familiar warning disable

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

您可以为异常声明一个名称 MyException,但是从来不对它进行任何操作。因为它没有被使用,编译器指出它。

您可以简单地删除该名称。

catch(AmbiguousMatchException)
{
doSomethingElse();
}

你可以简单地写:

catch (AmbiguousMatchException)

如果在 catch 子句中不使用异常名称,则省略该异常名称。

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

如果有一个日志正在运行,那么可以将异常写到日志中。也许对追踪任何问题都有用。

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

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

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