//自定义异常处理类 using System; using System.Diagnostics; namespace MyAppException {   ///   /// 从系统异常类ApplicationException继承的应用程序异常处理类。   /// 自动将异常内容记录到Windows NT/2000的应用程序日志   ///   public class AppException:System.ApplicationException    {   public AppException()    {   if ( ApplicationConfiguration.EventLogEnabled ) LogEvent ( "出现一个未知错误。" );    }   public AppException ( string message )    {   LogEvent ( message );    }   public AppException ( string message,Exception innerException )    {   LogEvent ( message );   if ( innerException != null )   {   LogEvent ( innerException.Message );   }    }   //日志记录类   using System;   using System.Configuration;   using System.Diagnostics;   using System.IO;   using System.Text;   using System.Threading;   namespace MyEventLog    {   ///   /// 事件日志记录类,提供事件日志记录支持   ///   /// 定义了4个日志记录方法 (error, warning, info, trace)   ///   ///   public class ApplicationLog    {   ///   /// 将错误信息记录到Win2000/NT事件日志中   /// 需要记录的文本信息   ///   public static void WriteError ( String message )    {   WriteLog ( TraceLevel.Error, message );    }   ///   /// 将警告信息记录到Win2000/NT事件日志中   /// 需要记录的文本信息   ///   public static void WriteWarning ( String message )    {   WriteLog ( TraceLevel.Warning, message );       }   ///   /// 将提示信息记录到Win2000/NT事件日志中   /// 需要记录的文本信息   ///   public static void WriteInfo ( String message )    {   WriteLog ( TraceLevel.Info, message );    }   ///   /// 将跟踪信息记录到Win2000/NT事件日志中   /// 需要记录的文本信息   ///   public static void WriteTrace ( String message )    {   WriteLog ( TraceLevel.Verbose, message );    }   ///   /// 格式化记录到事件日志的文本信息格式   /// 需要格式化的异常对象   /// 异常信息标题字符串.   ///   /// 格式后的异常信息字符串,包括异常内容和跟踪堆栈.   ///   ///   public static String FormatException ( Exception ex, String catchInfo )    {   StringBuilder strBuilder = new StringBuilder();   if ( catchInfo != String.Empty )   {   strBuilder.Append ( catchInfo ).Append ( "\r\n" );   }   strBuilder.Append ( ex.Message ).Append ( "\r\n" ).Append ( ex.StackTrace );   return strBuilder.ToString();    }   ///   /// 实际事件日志写入方法   /// 要记录信息的级别(error,warning,info,trace).   /// 要记录的文本.   ///   private static void WriteLog ( TraceLevel level, String messageText )    {   try    {   EventLogEntryType LogEntryType;   switch ( level )    {   case TraceLevel.Error:   LogEntryType = EventLogEntryType.Error;   break;   case TraceLevel.Warning:   LogEntryType = EventLogEntryType.Warning;   break;   case TraceLevel.Info:   LogEntryType = EventLogEntryType.Information;   break;   case TraceLevel.Verbose:   LogEntryType = EventLogEntryType.SuccessAudit;   break;   default:   LogEntryType = EventLogEntryType.SuccessAudit;   break;    }   EventLog eventLog = new EventLog ( "Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );   //写入事件日志   eventLog.WriteEntry ( messageText, LogEntryType );    }   catch {} //忽略任何异常    }    } //class ApplicationLog }