当前位置:主页   - 电脑 - 网站开发 - ASP.Net
(Exception handle)分层架构异常处理机制
来源:网络   作者:   更新时间:2010-03-03
收藏此页】    【字号    】    【打印】    【关闭

(Exception handle)分层架构异常处理机制

  图片看不清楚?请点击这里查看原图(大图)。

  针对于通常的三层架构 我们需要针对于异常做一些处理,从上面的异常处理组件图当中,我们能看到自定义异常和异常处理层层上抛,具体我们还是来看代码吧!

  自定义异常:

 /// <summary>
    /// 自定义BLL层异常类
    /// </summary>
    [Serializable]
    public class BLLException : Exception, ISerializable
    {
        private string myBLLMsg;
        /// <summary>
        /// 自定义本地文本信息属性
        /// </summary>
        public string MyBLLMsg
        {
            get
            {
                return myBLLMsg;
            }
        }
        /// <summary>
        /// 重写只读本地文本信息属性
        /// </summary>
        /// <remarks>
        /// 在myExcuteMsg不存在的情况下,返回继承Base.Message,
        /// 如果存在则返回 myExcuteMsg + base.Message
        /// </remarks>
        public override string Message
        {
            get
            {
                return myBLLMsg == null ? base.Message : myBLLMsg + base.Message;
            }
        }
        /// <summary>
        /// 实现基类的各公用构造函数
        /// </summary>
        public BLLException()
            : base() { }
        /// <summary>
        /// 实现基类的各公用构造函数
        /// </summary>
        /// <param name="message">基类的异常消息</param>
        public BLLException(string message)
            : base(message) { }
        /// <summary>
        /// 实现基类的各公用构造函数
        /// </summary>
        /// <param name="messager">基类的异常消息</param>
        /// <param name="innerException">导致当前异常的异常</param>
        public BLLException(string messager, Exception innerException)
            : base(messager, innerException) { }
        /// <summary>
        /// 实现自定义消息公用构造函数
        /// </summary>
        /// <param name="message">基类的异常消息</param>
        /// <param name="myExcuteMsg">自定义异常信息</param>
        public BLLException(string message, string myExcuteMsg)
            : base(message)
        {
            this.myBLLMsg = myExcuteMsg;
        }
        /// <summary>
        /// 实现自定义消息公用构造函数
        /// </summary>
        /// <param name="messager">基类的异常消息</param>
        /// <param name="myExcuteMsg">自定义异常信息</param>
        /// <param name="innerException">导致当前异常的异常。</param>
        public BLLException(string messager, string myExcuteMsg, Exception innerException)
            : base(messager, innerException)
   e    {
            this.myBLLMsg = myExcuteMsg;
        }

        protected BLLException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
            myBLLMsg = info.GetString("MydelMsg");
        }
        /// <summary>
        /// 重写GetObjectData方法,实现向SerializationInfo中添加自定义字段信息。
        /// </summary>
        /// <param name="info"></param>
        /// <param name="context"></param>
        public override void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("MydelMsg", myBLLMsg);
            base.GetObjectData(info, context);
        }
    }

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明