日期:2014-05-20  浏览次数:20774 次

真的需要判断参数是否为NULL么?
RT,大家说说写方法时是否判断参数为NULL的情况(这里指自己对NULL不处理,也是抛出异常的情况,而不是指处理掉参数NULL的情况),你为什么要判断,。
举例说明:

//不是这种
public static String getString(String s){
    return s == null ? "" : s;
}

//是这种
public static String getString(String s){
    if(s == null)
        throw new NullpointException.....
    return s.toString();
    ....
}

//以上代码只是举例说明(别一看就认为不需要用throw,因为toString()的时候必然会抛出NullpointException)思维不要被例子里的代码限制了,还有其他许多复杂的情况。

------解决方案--------------------


public void doSomthing(String str){


//查询数据库
//IO操作
//网络通信

str.trim();//这里抛异常了前面的工作不都白做了,还浪费资源
}

------解决方案--------------------
public函数不检查参数,熊孩子什么都敢往里传的
------解决方案--------------------
不是十分理解,楼主不是想抛空指针吧,举个例子,当传入的为Null的时候,抛出一个TermException(),给鬼子做项目的时候要有这个null判断,抛出一个他们想要的异常和异常号
不知道楼主是不是这个意思
------解决方案--------------------
分情况  要看具体业务
有时s可能是从一个你不确定的一个程序传进来的 也就是别人调用了你  但是他传个空值会使程序达不到想要的效果  比如你这个方法是根据传过来的参数获取session  这样null值是没意义的  自然没必要调用get  而是要在get之前拦截  否则你用null得到的值是空  对那个空操作  就会nullpointer  这是你不希望的
还有一种情况就是  s是不是空对程序没有影响  比如你要用这个参数和某些值比较  这样就不需要判断
个人不喜欢判断  而是在javadoc中写好了  别传空进来  这是设计原则  我只保证传入正确的值可以得到正确的结果  你传的值有问题导致结果不对  能怪我吗
最好还是有个好的约定  避免这种情况
------解决方案--------------------
防御式编程:
1、对方法的参数作判断,有可能增加效率,如果参数引起异常,尽早抛出总是没问题的
2、对方法的返回值作判断,使之是一个合理的值