惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google Online Security Blog
Google Online Security Blog
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
V
V2EX
雷峰网
雷峰网
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
F
Full Disclosure
Y
Y Combinator Blog
V
V2EX - 技术
Attack and Defense Labs
Attack and Defense Labs
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
SecWiki News
SecWiki News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
量子位
PCI Perspectives
PCI Perspectives
S
Secure Thoughts
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AWS News Blog
AWS News Blog
Blog — PlanetScale
Blog — PlanetScale
爱范儿
爱范儿
K
Kaspersky official blog
B
Blog
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
L
LangChain Blog
T
Tor Project blog
P
Privacy & Cybersecurity Law Blog
Recent Announcements
Recent Announcements
宝玉的分享
宝玉的分享
The Register - Security
The Register - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
Lohrmann on Cybersecurity
D
Docker
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
The Last Watchdog
The Last Watchdog
S
Security Affairs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy International News Feed
Simon Willison's Weblog
Simon Willison's Weblog

博客园 - 花边软件,花边管理软件,服装(鞋)管理软件

让TextArea支持MaxLength的自定义文本框控件 让客户端js添加的Option也能保持在DropDownList TextBoxWatermark文本框水印效果 统一项目按钮外观 exe代替批处理文件添加注册表数据 自定义文本框控件,包含Name跟ID 系统权限设置 话说统一项目的Back(后退)控件 Css实现的颜色皮肤更换 sql注入 DataTable拷贝DataTable的数据 让每个页面的生命周期过程只产生一个Connection连接 一对多查询跟显示全路径Sql 多浏览器web开发界面的注意事项 - 花边软件,花边管理软件,服装(鞋)管理软件 - 博客园 如何将公共的JS变量跟方法集中放在同一个地方而且只加载一次 JS实现的HashTable类来记录删除的记录的ID跟Name 多语言站点 asp.net Web控件的设计时调试 正则表达式替换字符串 - 花边软件,花边管理软件,服装(鞋)管理软件 - 博客园
项目统一错误捕获
花边软件,花边管理软件,服装(鞋)管理软件 · 2008-06-01 · via 博客园 - 花边软件,花边管理软件,服装(鞋)管理软件

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

定义一个错误的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.可以随意关闭是否记录错误的日志。