否页面中每个对象都需要判断是否为null?
net 开发webform,想请教一下各位:是否页面中每个对象都需要判断是否为null?
假设有一个页面,页面上显示的是一个课程的信息,比如课程介绍,开课时间,课程教师,课程图片等等课程对象属性的信息,浏览器的地址栏中一定会有一个课程的id。如果在地址栏中输入一个不存在的课程的id,那么这个时候代码中应该作何处理,我觉得:
1.如果对象不为空,则读取信息,若为空,则不读取。这样的话,页面中需动态读取信息的地方都是空白的,只有静态信息。
2.若对象不存在,则直接跳转到404页面。
3.若对象不存在,则默认读取一个一定存在的对象的信息。
4.若对象不存在,则返回到课程列表页之类的页面。
但是,我看我们公司的很多代码都不作判断,直接读取对象的信息,然后在配置文件中配置个404,于是,你在浏览器中输入一个不存在的课程的id,直接跳转到404(代码出错了,跳转的,不报黄页而已),这样处理能行吗,我总觉得这样子不行啊,这应该是代码中的错误啊。
各位大牛都是怎么处理这种情况的,是不是都应该判断一下对象是不是为空啊,还是有一些别的更好的方法?
------解决方案--------------------5 不存在 显示不存在本页呀
------解决方案--------------------那样处理也是可以的,不能算是代码错误,因为前提是URL中的id本身就是不存在的(url不正确)导致的,所以判定为404是合理的
一般出现这种情况会用你说的2或4,4的跳转还得说明出错的原因
------解决方案--------------------可以在程序里进行异常捕获,细化异常(捕获多种类异常),并且在catch中分别进行处理(跳转、返回等)。
------解决方案--------------------em:
try
{
//对对象的操作
}
catch (NullReferenceException nrex)
{
//对象为空的时候怎么处理
}
catch(ObjectDisposedException odex)
{
//对象被释放了你还去操作怎么处理
}
catch(Exception ex)
{
//什么都不是的时候怎么处理
}
------解决方案--------------------1.判断是否为null是很重要的,不管采用那种方式做结果显示。任何异常对系统都是有影响的。
2.不要轻易使用 try?catch .catch部分性能消耗非常大.如果只是用在null判断这种常见事物上,明显对性能的影响极高.
在做转换或者tostring之前 多做一个判断不会让你废太多事。
3.可以考虑写StringExtension自己写扩展方法,节约你每次都写判断的需要
if (string.IsNullOrEmpty(str))
{
return "";