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

本文关键字:未使用 MyException 变量 声明 | 更新日期: 2023-09-27 18:00:16

我需要清除此警告:

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

编译者告诉我:

变量"MyException"已声明,但从未使用

我该怎么解决这个问题。

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

  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.

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

您可以简单地删除名称。

catch(AmbiguousMatchException)
{
   doSomethingElse();
}

您可以简单地编写:

catch (AmbiguousMatchException)

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

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

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

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

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

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

刚刚遇到这个问题,其中异常是基于编译器变量使用的。。。

无论如何,我的解决方案是:

 _ = MyException;

把它当作用过的捡起来,承认它并没有真正被使用。