catch块出错

时间:2010-11-22 10:27:21

标签: c# compiler-errors

我正在使用桌面应用程序,当我在事件日志中处理catch块中的错误时,我收到错误

  

错误3找不到类型或命名空间名称'EventLog'(您是否缺少using指令或程序集引用?)

在此

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

等待建议。

4 个答案:

答案 0 :(得分:4)

加入顶部:

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(最喜欢的方式):

catch (Exception ex)
{
    using (var log = new System.Diagnostics.EventLog("Application") { Source = "MFDBAnalyser" })
    {
        log.WriteEntry(ex.Message);
    }
}
  • 关键字var会缩短代码长度。
  • 您应该致电Dispose()(或使用using阻止)来实施IDisposable的课程!

答案 1 :(得分:2)

假设您的项目已引用System.dll(通常是这种情况),您可以通过以下方式解决此问题:

  • 通过在文件顶部添加using System.Diagnostics;指令来导入命名空间。
  • 完全限定类型 - System.Diagnostics.EventLog log = ...
  • 提供别名。例如,在文件顶部添加using EventLog = System.Diagnostics.EventLog;

答案 2 :(得分:1)

您是否已将使用指令添加到System.Diagnostics

如果没有,则必须将其写为System.Diagnostics.EventLog

答案 3 :(得分:1)

您应该将EventLog类库引用添加到引用System.Diagnostics