一下代码在调试的时候并没有抛出异常,但是程序发布以后却抛出异常,请问有大牛之道是什么原因吗?            try
            {
                //MessageBox.Show("m_allStationsInfo ++" + m_allStationsInfo.Count.ToString());  
                Station station = null;
                foreach (StationInfo tmp in m_allStationsInfo)
                {
                    station = new Station(tmp.id);
                    m_stationsDic.Add(tmp.id, station);
                }
            }
            catch
            {
                MessageBox.Show("创建站点字典失败");
            }

解决方案 »

  1.   

    “调试”这个词其实歧义太大了。有些人偶尔随便输入一两次数据,也算是调试过了,而且以后修改代码以后都不到重新“调试”的。我使用测试驱动、极限编程方法,我觉得只有以工程方式来检验自己才算是心里有数。手工“调试”过几次,那说明不了程序的质量水平。实际上每天进行成千上万次、以随机测试数据来自动化测试的程序,其开发过程中几乎不需要调试,因为有任何bug就会立刻将焦点集中在某几行语句、某一个只需要几分钟就可以改好的范围内。那是工程方法来创作软件,不是随意涂鸦。
      

  2.   

    我指的调试是指在VS中的debug中通过了。非常感谢你的回答。
      

  3.   

    我还是尽量给你一些建议好了。首先,千万不要自以为很聪明地搞什么try...catch。你写这个代码,就等于你把自己真正调试诊断之路给堵死了,就好象某些只顾任意夸大中医的所谓中医专家搞的一样,已经跟老祖宗的注重诊断技术的中医完全是背道而驰了。同样地,作为一个有经验的人我要告诉你,你应该删除你的try...catch,这样你的程序有bug时才会告诉你是哪一个文件、那一条语句出的错误,你才知道接下来自己找什么测试数据去调试,根据异常堆栈信息知道该在哪里设置断点并且如何深入到堆栈内部去看调用一个方法之前以及进入调用后的环境下的变量值。总之,不要写try...catch。第二点,不要总是把“抛出异常”挂在嘴上。经常说的应该是程序的机制,以及经常研究怎样设计测试用例、测试数据,才能有效地让程序内的哪一些代码、怎样的分支流程可以被测试到。这不是别人可以随口就告诉你然后你照抄的,你需要自己去设计出测试用例来!
      

  4.   

    其实这个代码的逻辑非常的简单,只是最普通的新建对象并加入到链表类型,实在是搞不懂怎么会出现异常,异常的提示是:station类型初始值设定项引发异常。想了很久都不知道哪里出错了。