这算是入门级的设计问题了,新手不好意思在这里征求下大家的意见。
通常情况下(就是传null为恶意而为,而非正常情况下有可能为null的情况)声明某带有参数的方法,在对待参数被传入null值时:
1.无视,让程序自动的触发空指针异常抛向上层,来惩罚恶意的调用者
2.判断是否为null,是则抛出一个自定义的非运行时异常
3.方法内部加强判断,当参数为null时采用另一套流程(比如不处理或直接返回null),保证不出运行时异常
------------------------------------------
大家觉得哪种处理方式合理呢?或是有什么更好的解决办法?
通常情况下(就是传null为恶意而为,而非正常情况下有可能为null的情况)声明某带有参数的方法,在对待参数被传入null值时:
1.无视,让程序自动的触发空指针异常抛向上层,来惩罚恶意的调用者
2.判断是否为null,是则抛出一个自定义的非运行时异常
3.方法内部加强判断,当参数为null时采用另一套流程(比如不处理或直接返回null),保证不出运行时异常
------------------------------------------
大家觉得哪种处理方式合理呢?或是有什么更好的解决办法?
Integer integer=new Integer(4);
.........
System.out.println((new Integer(2)+integer);如果运行中integer值为null会抛出异常,但如果在使用前对integer做一些判断:
if(integer==null){
System.out.println("integer is null.")
System.out.println((new Integer(2)));
}else {
System.out.println((new Integer(2))+integer);
}
这样应该更好一些,程序能继续下去,同时人们可以知道,integer有问题了。
通常不可能对所有的引用都做是否为null的判断,这部分引用应该采用1,2的办法来处理,但对你在编程时无法断定的引用(比如integer是从文件中反序列化来的),应该主动处理之。
如果你的方法是做除法,如果除数传入0,那么你的方法开始也要判断除数是否为0,而不应该向上抛出异常。
如果向上抛出异常,该方法可能在不同地方多次调用,这样会增加try catch代码。
比如有个排序函数的参数列表需要调用端设置一下起始方向是"up”“down”"left"或是"right",我想这种情况还是不判断的好,压根就是太纵容调用端了。
以上是我个人看法。
还是想听听诸位前辈的建议。
怎莫处理null的话
要看你这方法用在什莫地方了如果是公共的方法,你必须要去处理,以实现你这个公共方法的功能
因为既然你把方法公开了,就要事前想定会发生的各种情况如果是protected的方法,可以根据类的设计要求,
看是从方法内处理还是把错误抛给调用者如果是私有方法,呵呵,
随便你自己啦
根据方法所在类的设计需求吧