用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c#代码库

自定义异常处理类

2012-10-12 作者: 神马举报

[c#]代码库

//自定义异常处理类
using System;
using System.Diagnostics;
namespace MyAppException
{
  /// <summary>
  /// 从系统异常类ApplicationException继承的应用程序异常处理类。
  /// 自动将异常内容记录到Windows NT/2000的应用程序日志
  /// </summary>
  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
                  
    {
      /// <summary>
      /// 事件日志记录类,提供事件日志记录支持
      /// <remarks>
      /// 定义了4个日志记录方法 (error, warning, info, trace)
      /// </remarks>
      /// </summary>
      public class ApplicationLog
              
    {
          /// <summary>
          /// 将错误信息记录到Win2000/NT事件日志中
          /// <param name="message">需要记录的文本信息</param>
          /// </summary>
          public static void WriteError ( String message )
          
        {
              WriteLog ( TraceLevel.Error, message );
              
        }
          /// <summary>
          /// 将警告信息记录到Win2000/NT事件日志中
          /// <param name="message">需要记录的文本信息</param>
          /// </summary>
          public static void WriteWarning ( String message )
          
        {
              WriteLog ( TraceLevel.Warning, message );
              
              
        }
          /// <summary>
          /// 将提示信息记录到Win2000/NT事件日志中
          /// <param name="message">需要记录的文本信息</param>
          /// </summary>
          public static void WriteInfo ( String message )
          
        {
              WriteLog ( TraceLevel.Info, message );
              
        }
          /// <summary>
          /// 将跟踪信息记录到Win2000/NT事件日志中
          /// <param name="message">需要记录的文本信息</param>
          /// </summary>
          public static void WriteTrace ( String message )
          
        {
              WriteLog ( TraceLevel.Verbose, message );
              
        }
          /// <summary>
          /// 格式化记录到事件日志的文本信息格式
          /// <param name="ex">需要格式化的异常对象</param>
          /// <param name="catchInfo">异常信息标题字符串.</param>
          /// <retvalue>
          /// <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para>
          /// </retvalue>
          /// </summary>
          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();
              
        }
          /// <summary>
          /// 实际事件日志写入方法
          /// <param name="level">要记录信息的级别(error,warning,info,trace).</param>
          /// <param name="messageText">要记录的文本.</param>
          /// </summary>
          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
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...