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


Answers:


137
  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
塔拉巴尼说

@ fparadis2给出的解决方案更好,因为在我们可以解决此问题时不建议使用警告警告
Ram

@dasariramacharanprasad是我的第一个建议,请重新阅读我的回答;)
Jalal Said

解决方案2不是解决方案,而是遮罩。
2014年

但这不是一个尖锐的问题:)
Jalal Said

41

您可以为异常声明一个名称MyException,但您绝不会对其进行任何操作。由于未使用,编译器会指出。

您只需删除名称即可。

catch(AmbiguousMatchException)
{
   doSomethingElse();
}

26

您可以简单地写:

catch (AmbiguousMatchException)

并在catch子句中不使用它时,请忽略该异常名称。


+1可以解决警告!在MSDN中没有解释。
拉姆

3

如果您正在运行一个异常,则可以将异常写出到日志中。对于跟踪任何问题可能很有用。

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

2

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


0

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

catch (AmbiguousMatchException MyException)
{
    Console.WriteLine(MyException); // use it here
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.