Ошибка в блоке catch - PullRequest
       7

Ошибка в блоке catch

1 голос
/ 22 ноября 2010

Я работаю над настольным приложением, в котором при обработке ошибки в блоке перехвата в журнале событий появляется сообщение об ошибке

Ошибка 3 Не удалось найти тип или имя пространства имен 'EventLog' (отсутствует директива using или ссылка на сборку?)

в этом

catch (Exception ex)
{
    EventLog log = new EventLog("Application");
    log.Source = "MFDBAnalyser";
    log.WriteEntry(ex.Message);
}

жду предложений.

Ответы [ 4 ]

4 голосов
/ 22 ноября 2010

Добавьте к началу:

using System.Diagnostics;

или используйте напрямую:

catch (Exception ex)
{
    System.Diagnostics.EventLog log = new System.Diagnostics.EventLog("Application");
    log.Source = "MFDBAnalyser";
    log.WriteEntry(ex.Message);
}

или если вы используете .NET 3.5 или 4.0 / VS 2008 или 2010 (наиболее предпочтительныйway):

catch (Exception ex)
{
    using (var log = new System.Diagnostics.EventLog("Application") { Source = "MFDBAnalyser" })
    {
        log.WriteEntry(ex.Message);
    }
}
  • Ключевое слово var уменьшает длину кода.
  • Вы должны вызвать Dispose() (или использовать блок using) для классов, реализующих IDisposable!
2 голосов
/ 22 ноября 2010

Если ваш проект ссылается на System.dll (обычно это так), вы можете решить эту проблему одним из

  • Импорт пространства имен путем добавления директивы using System.Diagnostics; в верхней части файла.
  • Квалификация типа полностью - System.Diagnostics.EventLog log = ...
  • Предоставление псевдонима. Например, добавив using EventLog = System.Diagnostics.EventLog; вверху вашего файла.
1 голос
/ 22 ноября 2010

Вы должны добавить EventLog ссылку на библиотеку классов к вашей ссылке System.Diagnostics

1 голос
/ 22 ноября 2010

Вы добавили директиву использования к System.Diagnostics?

Если нет, то вместо этого вам нужно будет написать System.Diagnostics.EventLog.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...