牛骨文教育服务平台(让学习变的简单)
博文笔记

自定义异常处理

创建时间:2008-05-21 投稿人: 浏览次数:468

 



//自定义异常处理类 
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(" "); 
    } 
    strBuilder.Append(ex.Message).Append(" ").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 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。