(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)
        {
            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);
        }
    }

时间: 2024-10-17 11:30:36

(Exception handle)分层架构异常处理机制的相关文章

基于.NET平台的分层架构实战(六)—依赖注入机制及IoC的设计

我们设计的分层架构,层与层之间应该是松散耦合的.因为是单向单一调用, 所以,这里的"松散耦合"实际是指上层类不能具体依赖于下层类, 而应该依赖于下层提供的一个接口.这样,上层类不能直接实例化下层中的类, 而只持有接口,至于接口所指变量最终究竟是哪一个类,则由依赖注入机制决定 . 之所以这样做,是为了实现层与层之间的"可替换"式设计 ,例如,现在需要换一种方式实现数据访问层,只要这个实现遵循了前面定义的 数据访问层接口,业务逻辑层和表示层不需要做任何改动,只需要改一下

PHP 5.0异常处理机制深度探索

异常处理    本文面向希望了解PHP5异常处理机制的程序员.阅读本文你需要具有一定面向对象编程和PHP基础. PHP5内建的异常类需要有以下成员方法: __construct()构造函数,需要一个出错信息和一个可选的整型错误标记作参数getMessage()取得出错信息 getCode()出错的代码 getFile()异常发生的文件getLine()异常发生的行数 getTrace()跟踪异常每一步传递的路线,存入数组,返回该数组 getTraceAsString()和getTrace()功能

Jersey框架的统一异常处理机制分析_java

一.背景 写这边文章源于有朋友问过java中的checked exception和unchecked exception有啥区别,当时我对其的回答是:我编程时仅用RuntimeException.其实,我说句话我是有前提的,确切的应该这么说:在成熟的开发框架下编写业务代码,我只使用或关注RuntimeException.因为,由于框架往往将异常的处理统一封装,这样以便程序员更好的关注业务代码,而业务的一些错误通常是在系统运行期间发生的,因此业务的异常通常被设计为RuntimeException的

JAVA【异常二】异常处理机制

Java中异常提供了一种识别及响应错误情况的一致性机制,有效地异常处理能使程序更加健壮.易于调试.异常之所以是一种强大的调试手段,在于其回答了以下三个问题: 什么出了错? 在哪出的错? 为什么出错? 在有效使用异常的情况下,异常类型回答了"什么"被抛出,异常堆栈跟踪回答了"在哪"抛出,异常信息回答了"为什么"会抛出.   在Java 应用程序中,异常处理机制为:抛出异常,捕捉异常. 抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运

php错误处理和php异常处理机制

php错误处理 当我们开发程序时,有时候程序出现了问题,我们就可以用以下几种办法找出错误. 开发阶段:开发时输出所有的错误报告,有利于我们进行程序调试 运行阶段:我们不要让程序输出任何一种错误报告(不能让用户看到(包括懂技术, 不懂技术的人)) 将错误报告写入日志中 一.指定错误报告 error_reporting = E_LL 二.关闭错误输出 display_errors = Off 三.开启错误日志功能 log_errors = On 1. 默认如果不指定错误日志位置,则默认写WEB服务器

C#异常处理机制初步

异常处理 今天学习了C#的异常处理机制,现将所学总结如下: 一.C#的异常处理所用到关键字 try 用于检查发生的异常,并帮助发送任何可能的异常. catch 以控制权更大的方式处理错误,可以有多个catch子句. finally 无论是否引发了异常,finally的代码块都将被执行. throw 用于引发异常,可引发预定义异常和自定义异常. 二.C#异常处理的格式 try { 程序代码块: } catch(Exception e) { 异常处理代码块: } finally { 无论是否发生异常

基于.NET平台的分层架构实战

基于.NET平台的分层架构实战(十一)-表示层的实现 基于.NET平台的分层架构实战(十)-业务逻辑层的实现 基于.NET平台的分层架构实战(九)-数据访问层的第三种实现:基 基于.NET平台的分层架构实战(八)-数据访问层的第二种实现:SQ 基于.NET平台的分层架构实战(七-外一篇)-对数据访问层第一种 基于.NET平台的分层架构实战(七)-数据访问层的第一种实现:Acc 基于.NET平台的分层架构实战(六)-依赖注入机制及IoC的设计 基于.NET平台的分层架构实战(五)-接口的设计与实现

Java异常处理机制

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的.比如说,你用System.out.println(5/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常. 有些异常需要做处理,有些则不需要捕获处理,在下面会详细讲到. 天有不测之风云,人有旦夕祸福,Java的程序代码也如此.在编程过程中,首先应当尽可能去避免错误和异常发生,对于不可避免.不可预测的情况则应考虑异常发生时如何处理. 而在Java中的异常用对象来表示

基于.NET平台的分层架构实战(五)—接口的设计与实现

接下来,将进行接口的设计.这里包括数据访问层接口和业务逻辑层接口.在 分层架构中,接口扮演着非常重要的角色,它不但直接决定了各层中的各个操作 类需要实现何种操作,而且它明确了各个层次的职责.接口也是系统实现依赖注 入机制不可缺少的部分. 本项目的接口设计将按如下顺序进行: 1.首先由前文的需求分析,列出主要的UI部分. 2.分析各个UI需 要什么业务逻辑支持,从而确定业务逻辑层接口. 3.分析业务逻辑层接口 需要何种数据访问操作,从而确定数据访问层接口. 另外,为保证完全的 面向对象特性,接口之