关于java中,“避免出现空指针”和“如何快速定位空指针”的讨论 本帖最后由 makeppy 于 2011-12-31 11:21:54 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有时检察输入的String类型变量str是否为合法输入时,使用判断:if( str!= null && !str.isEmpty() )而不能写成 if( !str.isEmpty() && str!= null )这样的话程序因为优先执行左边的判断语句,从而导致NullPointerException 的发生. stracktrace一看马上就定位到了,原因一般也会一目了然,用得着讨论? nullpointer是最好发现最好处理的java exception之一,可以说 我觉得等程序运行后才去发现那就有些晚了,应该是防患于未然,无论什么语言编写程序,程序员应该都应该对编程有的警觉性。java提供空指针异常抛出,但是如果c/c++。出现空指针也许程序崩溃不算什么,但是出现更严重的结果呢?为啥不事先做到尽量减小的损失,保证程序的尽量完美。 stracktrace只能定位方法,但是一个方法中如果调用了很多的内容的话,并不能明确的知道是哪一行出的问题的。如果这个异常是不容易重现的话,那这个问题就很难解决了。所有我觉得有讨论的必要。ps:多谢关注 多用一些3目表达式。例如 var==null?”“:var null object 模式。DbCgoogle guava: com.google.common.base.Optional 空指针异常的出现,基本上不能怪别人,只能怪自己的编码形式有问题。建议:1:对于所有 public 方法传入的对象参数进行 null 值检查2:对于所有从数据库获取的对象进行 null 值检查3:对于所有从网络、IO 中获取的数据(对象)进行 null 值检查做到以上三点,空指针异常基本上会跟你说拜拜! 那个String的非空判断可以用apache的common-lang3中的StringUtils.isBlank()或者是isNotBlank()来判断。 最常见的NullException是这样产生的: myCup.getCoffee().drink(); //getCoffee() returns null 1:对于所有 public 方法传入的对象参数进行 null 值检查2:对于所有从数据库获取的对象进行 null 值检查3:对于所有从网络、IO 中获取的数据(对象)进行 null 值检查做到以上三点,空指针异常基本上会跟你说拜拜!但是很麻烦啊 list.add(1,Factory.add(fstu1,fstu2));返回空指针异常factory两构造方法如下public Factory(){}public Factory(int i){...}Factory.add()返回一个factory对象,fstu1,fstu2均是factory对象添加构造方法public Factory(Factory f){...}运行正常,如何解释 好像没有这么写的吧,先声明一个该对象的变量,再用add方法赋值吧 在很多情况下 我不尝试去避免NullPointerException 因为我通常把NullPointerException当作逻辑错误 出现了就是程序逻辑有问题 如果吞掉NullPointerException 而不做出任何反应的话 不利于寻找bug 搞android的表示,每次看见空指针,就会很开心因为空指针是最容易解决的问题或者说根本不是问题 if ("root".equals(userName)) {....} 这样只是不报错吧,该空还得空,怎么避免? if ("root".equals(userName)) {....} 我觉得这样写还不如userName != null 然后在&& equals jsp 纵向和横向都只能选择一个 关于FilenameFilter的问题 紧急求助:怎样让socket的一个线程实现连续读写 阶乘和,结果全是1,惨 用jni能往vc里传arraylist吗? java gui 这个外面的边框是怎么做的。 我自己做的一个效果,可只有当把组件先小化再点出时这个效果才出现,这是怎么回事? 用DataInputStream 从文件中读整数,不知道如何实现 JFrame中的GIF图片(非静态)为什么不能播放? 有关java中的绘图机制 (在线等待)急! 一个简单的关于字符串处理的算法,请教高手. 新手问个java问题。
if( str!= null && !str.isEmpty() )
而不能写成 if( !str.isEmpty() && str!= null )这样的话程序因为优先执行左边的判断语句,从而导致NullPointerException 的发生.
2:对于所有从数据库获取的对象进行 null 值检查
3:对于所有从网络、IO 中获取的数据(对象)进行 null 值检查做到以上三点,空指针异常基本上会跟你说拜拜!
2:对于所有从数据库获取的对象进行 null 值检查
3:对于所有从网络、IO 中获取的数据(对象)进行 null 值检查做到以上三点,空指针异常基本上会跟你说拜拜!但是很麻烦啊
factory两构造方法如下
public Factory(){}
public Factory(int i){...}Factory.add()返回一个factory对象,fstu1,fstu2均是factory对象
添加构造方法
public Factory(Factory f){...}运行正常,如何解释
因为我通常把NullPointerException当作逻辑错误 出现了就是程序逻辑有问题
如果吞掉NullPointerException 而不做出任何反应的话 不利于寻找bug
if ("root".equals(userName))
{....} 这样只是不报错吧,该空还得空,怎么避免?
{....} 我觉得这样写还不如
userName != null 然后在&& equals