Переменная MyException объявлена, но никогда не используется - PullRequest
64 голосов
/ 23 июня 2011

Мне нужно очистить это предупреждение:

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

Компилятор говорит мне:

Переменная MyException объявлена, но никогда не используется

Как мне это исправить.

Ответы [ 6 ]

127 голосов
/ 23 июня 2011
  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.
37 голосов
/ 23 июня 2011

Вы объявляете имя для исключения, MyException, но вы ничего не делаете с ним.Поскольку он не используется, компилятор указывает на это.

Вы можете просто удалить имя.

catch(AmbiguousMatchException)
{
   doSomethingElse();
}
24 голосов
/ 23 июня 2011

Вы можете просто написать:

catch (AmbiguousMatchException)

и опустить имя исключения, если оно не будет использоваться в предложении catch.

2 голосов
/ 23 июня 2011

Вы можете записать исключение в журнал, если он запущен. Может быть полезно для отслеживания любых проблем.

Log.Write("AmbiguousMatchException: {0}", MyException.Message);
2 голосов
/ 23 июня 2011

Проблема в том, что вы нигде не используете свою переменную MyException.Это объявлено, но не используется.Это не проблема ... просто компилятор дает подсказку на случай, если вы намеревались его использовать.

0 голосов
/ 08 октября 2018

but never used означает, что вы должны использовать его после catch (), например, для записи его значения в консоль, тогда это предупреждающее сообщение исчезнет.

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