• 一个让我狂晕的异常及例行xiao总结


    最近写一个社区程序,是按三层结构来写,已经写好了实体层,数据存取层,准备
    抽取一部分方法来做测试(呵呵,个人的小程序,就不需要那么严格了),确不料老是
    出现StackOverflowException异常,MSDN对该异常的解释是:挂起的方法调用过多而
    导致执行堆栈溢出时引发的异常,个人认为实体层一般是不会出错的,至少我从接触
    .NET到如今一年多了,写的实体层的错误基本在编译阶段就能解决,还未出现需要在运行
    期才会出现的错误呢,随着排错范围的不断缩小,发现错误只能出现在实体层,随即
    检查各个实体方法的属性,真的要狂晕,大家看看下面User类中的代码:

     private string _UserName = string.Empty ;
     
    public string UserName
     
    {
      
    get return _UserName ; }
      
    set { UserName = value ; } //Error in here
     }


    发现什么了吗?当我们给这个属性附值的时,将会出现一个类似死循环的过程,最后
    只有抛出StackOverflowException异常了
       进一步思考,如果是如下会怎么样呢:

     private string _UserName = string.Empty ;
     
    public string UserName
     
    {
      
    get return UserName ; }
      
    set { _UserName = value ; }
     
     }

    在获取这个属性值依然会抛出StackOverflowException异常,原因同上
    说明:本文的实体层是指类似.text blog,asp.net forums形式而非duwamish形式

    个人结论:实体层不论是简单还是较复杂,都有出错的可能,而且有些隐蔽性比较大
       但排错不难,在程序出现错误的时候,特别是出现的错误无具体提示的时候,
       应该先排除涉及到的实体对象,然后才是逐步缩小排错范围

    欢迎鲜花和板砖!
          

  • 相关阅读:
    danci8
    禁止选择文本
    danci6
    danci5
    java 学习编译
    自动代码模板文件
    java 学习5 .io
    java 学习4 callback 回调 和泛型
    java 学习3。集合
    java 学习3。类 和 继承
  • 原文地址:https://www.cnblogs.com/kwklover/p/45888.html
Copyright © 2020-2023  润新知