C/S开发框架系统异常处理机制(Exception Handler)

作者:C/S原创  发布日期:2011/04/15 15:45:17
  C/S开发框架系统异常处理机制(Exception Handler)

C/S开发框架系统异常处理机制(Exception Handler)



异常处理机制(Exception Handler)


构建安全稳定的应用系统首先要处理的是系统抛出的异常, 否则在程序运行中因系统发生错误而中止程序。我总结了以下四种保护机制:


1. 处理系统未被捕获的异常, static void Main() 方法内设置

   //引发未捕获的异常,这里没有try{}catch()异常保护,
   //由Application.ThreadException事件捕获



2.处理界面层抛出的异常
    //界面层异常指捕获窗体内的错误。
    //常用错误是操作未实例化的对象,索引错误,第三方控件错误等.



3.处理业务逻辑层抛出异常



4. 处理数据层或多层嵌套调用中抛出异常






贴图图片



贴图图片



用户自定义异常:


/// <summary>
/// 用户自定义异常
/// </summary>
public class CustomException : Exception
{
   private string MSG = "系统产生用户自定义异常!";
   private object _sender = null;
   
   public CustomException(object sender, string msg)
   : base(msg)
   {
      _sender = sender;
   }
}

/// <summary>
/// 用户操作未授权的窗体或业务逻辑所产生的异常
/// </summary>
public class UnauthorizedException : CustomException
{
   public UnauthorizedException(object sender, string msg)
   : base(sender, msg)
   {
      //
   }
}

/// <summary>
/// 用户操作已锁定的单据
/// </summary>
public class OperateLockedOrder : CustomException
{
   public OperateLockedOrder(object sender, string msg)
   : base(sender, msg)
   {
      //
   }
}

// 来源:www.CSFramework.com, C/S结构框架学习网





/// <summary>
/// 处理系统所产生的异常
/// </summary>
public class ExceptionHandle
{
   
   //处理由sender参数传递过来的异常
   public static void Handle(object sender, Exception ex)
   {
      string msg = "Sender:" sender.GetType().Name ":\r\nException Type:"
      ex.GetType().Name "\r\nDescription:" ex.Message;
      
      ExceptionLog.WriteLog(msg "\r\nException Time:" DateTime.Now.ToString());
      ExceptionLog.WriteLog("------------------------------------------------------");
      
      _text.Text = msg; //在TextBox控件内显示
      
      MessageBox.Show(msg, "捕获到异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
   }
   
   private static TextBox _text = null;
   
   /// <summary>
   /// 这个方法仅用于显示当前异常信息,无实际意义!
   /// </summary>
   public static void ExceptionTextBox(TextBox text)
   {
      _text = text;
   }
}

// 来源:www.CSFramework.com, C/S结构框架学习网





C/S框架网|原创精神.创造价值.打造精品




点击下载附件 点击下载附件 (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)
参考文档:

WCF:SecurityNegotiationException 调用方未由服务进行身份验证
CSFramework.WebApi时钟定时作业异步处理程序(IThreadHandler接口)实现
.NETCore WebApi运行报错:System.AggregateException:“Some services are not able to be constructed|C/S开发框架
达梦数据库DmException: 变量空间溢出 [sql]: INSERT INTO,Microsoft.EntityFrameworkCore.DbUpdateException|C/S开发框架
MySqlConnector.MySqlException:“Loading local data is disabled|C/S开发框架
OracleException:“ORA|00942: 表或视图不存在”解决方案|C/S开发框架
EFCore报错:OracleException: ORA|01465: 无效的十六进制数字|C/S开发框架
EF提交数据:DbUpdateException:不能更新时间戳列。(Timestamp类型)|C/S开发框架
FastReport.NET报错 System.PlatformNotSupportedException:“Operation is not supported on this platform.”
Relations.Add报错:System.ArgumentException:“不能启用此约束,因为不是所有的值都具有相应的父值。”
FastReport.NET v2021 打印预览报表出错NullReferenceException / RestoreEncodedText,踩坑!
CSFrameworkV6 - .NET敏捷开发之道 - Exception异常扩展类
调用WCF服务System.ServiceModel.ServiceActivationException:"无法激活请求的服务"
C/S框架日志管理管理器(LogUserOperate)/本地日志(LogLocalException)/数据库日志(LogDB)
CSFramework.AutoUpgrader 发布命令升级包出错:InvalidOperationException使用 XmlInclude 或 SoapInclude 特性静态指定非已知的类型
C#获取按钮的EventClick事件,EventHandlerList委托的调用列表