这样的一个场景
我要从数据库里面取出一个记录。
具体的就是dataset.tables[0].rows[0]["name"];
这里就有三个地方需要判断是否会出问题!可能dataset = Nulldataset可能没有取出来任何tabletable里面可能没有任何rowrow里面可能没有一个叫做"name"的列为了解决这个问题,我只能做多步判断。
if(dataset!=null)
if(dataset.tables.count !=0)
if(dataset.tables[0].rows.count !=0)
if(dataset.tables[0].rows[0]["name"]!=null)这样就太麻烦了吧!不知道有什么好的方法来处理这类问题!
在日常的coding中遇到了非常多的这种问题,但是一直没找到好的方法!
我还想问这种问题应该属于编程中的哪个方面,我好学习学习者方面的知识!最好能给我推荐这方面的书籍或者网站。(是什么健壮性,鲁棒性吗?)感激不尽!异常

解决方案 »

  1.   

    只要你有sql语句进去,即使返回记录数为0, dataset不会为空语句是你自己传进去的,为何还要判断那么多?有多少个select语句返回,就有多少个tableif (table.Rows.Count == 0)
    {
        return null;
    }这一句肯定要判断还有字段是否存在?这个也不要判断,你自己写的代码为何还要去判断,难道用户可以改吗?
      

  2.   

    多多学习一点面向对象,其实这些可以说只要一个判断就可以了。
    只要有记录数返回,就转换为list,没有数据返回,就传回null,是null了你还要判断什么吗?
      

  3.   

    照常理来讲,自己查询的字段是自己控制的,所以自己可以完全确保不会不存在,但是有的情况是,你是调用别人的存储过程来取得dataset的,而字段的话,都是起了别名的,而且这个别名随时根据领导的喜好来更改,而使用别人的dal层发生有时候也回出现错误,最主要的是他们还把错误catch了,所以会出现没有返回的table填充到dataset里面去的情况!
      

  4.   


    我也想直接用catch一下,但是程序中在用一个方法里面有好几处都是这样的情况,难道我都把他们用try catch来解决吗?
      

  5.   


    我也想直接用catch一下,但是程序中在用一个方法里面有好几处都是这样的情况,难道我都把他们用try catch来解决吗?不是catch, 是throw异常一般是在最外层才catch,例如UI上显示给用户时。
    在各个方法里面,只要无法执行预定的功能,就可以throw一个异常,说明问题出在哪里就可以了。
      

  6.   

    谢谢我也想直接用catch一下,但是程序中在用一个方法里面有好几处都是这样的情况,难道我都把他们用try catch来解决吗?不是catch, 是throw异常一般是在最外层才catch,例如UI上显示给用户时。
    在各个方法里面,只要无法执行预定的功能,就可以throw一个异常,说明问题出在哪里就可以了。
      

  7.   

    有没有些什么sample能让我学习下的吗、、我也想直接用catch一下,但是程序中在用一个方法里面有好几处都是这样的情况,难道我都把他们用try catch来解决吗?不是catch, 是throw异常一般是在最外层才catch,例如UI上显示给用户时。
    在各个方法里面,只要无法执行预定的功能,就可以throw一个异常,说明问题出在哪里就可以了。