net 开发webform,想请教一下各位:是否页面中每个对象都需要判断是否为null?
  假设有一个页面,页面上显示的是一个课程的信息,比如课程介绍,开课时间,课程教师,课程图片等等课程对象属性的信息,浏览器的地址栏中一定会有一个课程的id。如果在地址栏中输入一个不存在的课程的id,那么这个时候代码中应该作何处理,我觉得:
    1.如果对象不为空,则读取信息,若为空,则不读取。这样的话,页面中需动态读取信息的地方都是空白的,只有静态信息。
    2.若对象不存在,则直接跳转到404页面。
    3.若对象不存在,则默认读取一个一定存在的对象的信息。
    4.若对象不存在,则返回到课程列表页之类的页面。
  但是,我看我们公司的很多代码都不作判断,直接读取对象的信息,然后在配置文件中配置个404,于是,你在浏览器中输入一个不存在的课程的id,直接跳转到404(代码出错了,跳转的,不报黄页而已),这样处理能行吗,我总觉得这样子不行啊,这应该是代码中的错误啊。
  各位大牛都是怎么处理这种情况的,是不是都应该判断一下对象是不是为空啊,还是有一些别的更好的方法?asp.netC#webnull

解决方案 »

  1.   

    那样处理也是可以的,不能算是代码错误,因为前提是URL中的id本身就是不存在的(url不正确)导致的,所以判定为404是合理的
    一般出现这种情况会用你说的2或4,4的跳转还得说明出错的原因
      

  2.   

    可以在程序里进行异常捕获,细化异常(捕获多种类异常),并且在catch中分别进行处理(跳转、返回等)。
      

  3.   

    em:            try
                {
                    //对对象的操作
                   }
                catch (NullReferenceException nrex)
                {
                    //对象为空的时候怎么处理
                   }
                catch(ObjectDisposedException odex)
                {
                    //对象被释放了你还去操作怎么处理
                   }
                catch(Exception ex)
                {
                    //什么都不是的时候怎么处理
                   }
      

  4.   

    1.判断是否为null是很重要的,不管采用那种方式做结果显示。任何异常对系统都是有影响的。
    2.不要轻易使用 try catch .catch部分性能消耗非常大.如果只是用在null判断这种常见事物上,明显对性能的影响极高.
    在做转换或者tostring之前 多做一个判断不会让你废太多事。
    3.可以考虑写StringExtension自己写扩展方法,节约你每次都写判断的需要  if (string.IsNullOrEmpty(str))
                {
                    return "";
                }
                return str;4.一般情况都会用你说的第2种方法处理,这点你可以试试CSDN上面的ID自己随意打打。但第4种方式也会去使用。各看各的了