在写N层结构应用程序时候经常得涉及到层次间方法的调用.调用具有返回值的方法时,象方法A调用方法B,正常情况下方法B应该返回正常值,但若是方法B找不到满足方法A的结果集或是有异常情况发生,这时我们一般采用特殊值来返回,以来标示方法B返回的不是正常值,然后在方法A中根据B中返回的特殊值做相应的处理.

   对于这种情况,我们要在方法A和方法B中同时做处理,返回的这个特殊值是方法A和方法B的共同约定值,两个方法约定好在异常或没预料情况发生时方法B应该返回什么值,同时方法A也应该知道这个值是什么,因为它需要知道当方法B返回给它这个值时预示着什么问题发生,然后再做相应处理.这样处理的话你会发觉这两方法联系太紧密了,如果很多方法间都这样处理,这样的话层次间藕合度也加大了, 这并不是我们期望看到的.

   我们可以考虑用自定义异常来解决这样问题,参考了宝玉
   下面还只是简单实现错误信息提示,还没有异常修复或回滚.只是起个抛砖引玉.更多的以后还会继续下去.

CustomException.cs
.NET自定义异常的一个简单应用(转载).NET自定义异常的一个简单应用(转载)    }

BlogExceptionType枚举
.NET自定义异常的一个简单应用(转载)    public enum BlogExceptionType
.NET自定义异常的一个简单应用(转载).NET自定义异常的一个简单应用(转载)    
    }


XmlMessageMananger.cs
.NET自定义异常的一个简单应用(转载).NET自定义异常的一个简单应用(转载)        }

message.xml
.NET自定义异常的一个简单应用(转载)<!-- message.xml -->
.NET自定义异常的一个简单应用(转载)
<?xml version="1.0" encoding="utf-8" ?> 
.NET自定义异常的一个简单应用(转载)
<root>
.NET自定义异常的一个简单应用(转载)
.NET自定义异常的一个简单应用(转载)
<message id="3">
.NET自定义异常的一个简单应用(转载)
<body>用户名只能由英文字母,数字,下划线组成</body>
.NET自定义异常的一个简单应用(转载)
</message>
.NET自定义异常的一个简单应用(转载)
.NET自定义异常的一个简单应用(转载)
<message id="4">
.NET自定义异常的一个简单应用(转载)
<body>密码长度必须在5-20之间</body>
.NET自定义异常的一个简单应用(转载)
</message>
.NET自定义异常的一个简单应用(转载)
.NET自定义异常的一个简单应用(转载)
<message id="5">
.NET自定义异常的一个简单应用(转载)
<body>您输入的验证码不匹配,请重新返回输入</body>
.NET自定义异常的一个简单应用(转载)
</message>
.NET自定义异常的一个简单应用(转载)
.NET自定义异常的一个简单应用(转载)
<message id="6">
.NET自定义异常的一个简单应用(转载)
<body>用户登陆失败,请重新输入</body>
.NET自定义异常的一个简单应用(转载)
</message>
.NET自定义异常的一个简单应用(转载)
.NET自定义异常的一个简单应用(转载)
<message id="7">
.NET自定义异常的一个简单应用(转载)
<body>更改密码时出现错误,请您再试一次</body>
.NET自定义异常的一个简单应用(转载)
</message>
.NET自定义异常的一个简单应用(转载)
.NET自定义异常的一个简单应用(转载)
<message id="8">
.NET自定义异常的一个简单应用(转载)
<body>很抱歉,发生了未知错误</body>
.NET自定义异常的一个简单应用(转载)
</message>
.NET自定义异常的一个简单应用(转载)
.NET自定义异常的一个简单应用(转载)
</root>


如果自定义异常类中定义了新的字段,我们必须让其实现ISerializable接口的GetObjectData(SerializationInfo info,StreamingContext context)方法和一个特殊的受保护的构造器CustomException(SerializationInfo info,StreamingContext context).其中GetObjectData()方法用来序列化新定义字段以及基类(ApplicatonException)定义的字段,而特殊构造器是为反序列化新定义的字段和基类定义字段。
象是CustomException类中若定义一个新字段field1.我们应该在CustomException类中实现GetObjectData方法和CustomException(SerializationInfo info,StreamingContext context)构造器.

           private string field1;.NET自定义异常的一个简单应用(转载)        

            //序列化
.NET自定义异常的一个简单应用(转载)
        public override void GetObjectData(SerializationInfo info,StreamingContext context)
.NET自定义异常的一个简单应用(转载).NET自定义异常的一个简单应用(转载)        
        }

相关文章:

  • 2021-08-14
  • 2022-02-10
  • 2022-01-16
  • 2021-09-06
  • 2021-12-09
  • 2022-12-23
  • 2021-06-21
  • 2022-12-23
猜你喜欢
  • 2022-01-16
  • 2021-09-02
  • 2021-09-11
  • 2022-02-10
  • 2021-07-04
  • 2022-02-02
  • 2021-11-28
相关资源
相似解决方案