项目统一错误捕获

一个项目总要记录系统运行中产生的错误,所以应该有统一的调用方法,即可以记录重要的系统错误,又可以根据错误做相应的友好提示页面,在开发过程中又可以直接抛出错误,简单明了的提示系统错误的原因。
下面是我们项目中的一个应用方法。

定义一个错误的Class,声明一个事件,在Application start进行绑定处理。
/// <summary>
 /// 错误代理
 /// </summary>
 public delegate void ErrorEventHandler(object objExInfo,Exception err,string strMsg);


 /// <summary>
 /// ErrorManage 的摘要说明。
 /// </summary>
 public class ErrorManage
 {
  /// <summary>
  ///
  /// </summary>
//  public ErrorManage()
//  {
//
//  }
  private static ErrorManage _ErrorManage;
  /// <summary>
  ///
  /// </summary>
  public static ErrorManage Current
  {
   get
   {
    if( _ErrorManage == null )
    {
     _ErrorManage = new ErrorManage();
    }
    return _ErrorManage;
   }
  }

  /// <summary>
  /// 错误触发的事件
  /// </summary>
  public event ErrorEventHandler OnError;

  /// <summary>
  /// 通过触发事件记录异常信息(绑定事件在Application_Start)
  /// </summary>
  /// <param name="errObj">发生异常的页面</param>
  /// <param name="err">异常对象</param>
  public virtual void LogError(Object errObj ,Exception err)
  {
   if(OnError != null)
   {
    OnError(errObj,err,err.Message);
   }
   System.Diagnostics.Debug.WriteLine(errObj + err.ToString());
  }
  /// <summary>
  ///
  /// </summary>
  /// <param name="errObj"></param>
  /// <param name="err"></param>
  /// <param name="Msg"></param>
  public virtual void LogError(Object errObj ,Exception err,string Msg)
  {
   if(OnError != null)
   {
    OnError(errObj,err,Msg);
   }
   System.Diagnostics.Debug.WriteLine(errObj + err.ToString());
  }
 }
调用方式如下:
protected void Application_Start(Object sender, EventArgs e)
  {
       ErrorManage.Current.OnError += new ErrorEventHandler(System_OnError);
                             }
 /// <summary>
        /// 记录异常信息
        /// </summary>
        /// <param name="objExInfo">发生异常的页面</param>
        /// <param name="err">异常对象</param>
        /// <param name="strMsg">异常消息</param>
  private void System_OnError(object objExInfo,Exception err,string strMsg)
  {
        //根据你项目的需要,自定义处理
   }
在项目开发过程中,有几点好处。
1.如果哪里发生异常,就直接抛出异常,界面就知道是哪里错误了,有利于直接找到错误点,而不用一步一步进行调试找错误。
2.可以加个自定义的异常类,根据异常类的描述,进行相应的错误记录跟友好页面提示。
3.可以随意关闭是否记录错误的日志。

posted @ 2008-06-01 23:07 突破自己 阅读(354) 评论(4)  编辑 收藏 所属分类: Net

  回复  引用  查看    
#1楼 2008-06-02 11:07 | StephenJu      
不错,有代码下载吗?
发一个吧,谢谢!
zhuzhengye@yahoo.com.cn
  回复  引用    
#2楼 2008-06-02 21:57 | sanney- [未注册用户]
我也要
  回复  引用  查看    
#3楼 2008-06-03 12:01 | 簡簡單單..      
手动调用LogError触发OnError事件! 用处不大..
  回复  引用  查看    
#4楼 [楼主]2008-06-03 21:20 | 突破自己      
@簡簡單單..
并不需要手工调用,在Application_Start进行绑定事件,引用的地方只要判断事件是否绑定,绑定了就调用事件处理程序。

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: