Java怎么预防空指针?

图片说明

try
catch

函数重载、 建一个同名无参数的函数

这样是不会有空指针异常的吧 除非代码是:page.toString()类似的才会有空指针异常

判断字符串等用''.equal(),尽量不要把变量放在前面来调用equals方法诸如此类的

在语义层面的控制,可以用Assert断言机制;如果只是异常处理用try catch

我感觉对于数据类型的对象,你可以这样判断:
if(null != page && page != 0)

这样就不会报空指针了吧

首先 正确的判断应该是

 if( page!=null && page != 0)

如果是必须要求有值才能继续后面的流程,可以抛出运行时异常

  if( page==null ){
    throw new RuntimeException("错误消息");
    }

一般我们会继承RuntimeException,写一个有意义的名称。

最好是这样写 if( null!=page && page != 0) ,把null放在前面

if(null != page && page != 0)

先判断不等于null在判断不等于0。怎样肯定不会空指针。

使用前进行指针的判断,然后在做进一步操作

1:对于所有 public 方法传入的对象参数进行 null 值检查
2:对于所有从数据库获取的对象进行 null 值检查
3:对于所有从网络、IO 中获取的数据(对象)进行 null 值检查

if(null != page && page != 0){
……
}
先判断是否非空,如果为空则会返回false,跳出if
不为空才进入第二个条件是否等于0

如果要进行特殊处理,可以用try catch捕获异常
try{
if(){
……
}
}catch(Exception e){
throw new RuntimeException("异常提示");
}

也可以在if后面跟上else
if(null != page && page != 0){
……
} else {
……
}

if(null != page && page != 0)
这样判断下,如果是空,try catch下,跑出空指针异常即可

的使用对像前先初始化

没有传入参数的话,应该调用不了该方法吧,如果传入的参数有问题

可以这样判断:
if(null != page && page != 0)

if( page!=null && page != 0) 正确的写法应该是这样。如果把page!=0写在前面,在比较的时候应该会对Integer类型拆箱,但是对于一个null应该没法拆箱,应该会报空指针

项目中遇到的NullPointerException 分两种情况:
1. 引用空对象,即调用空对象的方法或引用空对象的属性。
2. 将8中基础类型的封装类赋值给对应的基础类。

个人在做项目时,对NullPointerException的几点总结,请网友拍砖!!!多多提意见,
1.对于别人接口的返回对象要做非空判断,因为我们不清楚获得的对象会不会为空,对于Collection Map 我一般会调用CollectionUtils MapUtils ,对于返回的String对象,我会调StringUtils.isNotEmpty()进行非空判断。他们中isNotEmpty不仅判断了NULL 还判断了空集合和空串。例如从数据中查询的结果。工作流中返回的定价URL
2. 对于自己创建的对象,要留心对象进行哪些操作,中间会不会造成对象为空,如果可能加非空判断,尤其是对于集合的操作,很容易就报空指针!!!所以每次对操作集合时,我都会非常的留心。
3. 对于前台的领域对象要非常的留心,因为这些对象是框架创建的,假如我没有在前台的文本框内输入值,虽然提交时后台获得的是空串,但发生NullPointerException的概率很高。
4. 对于String 的操作尽量使用apache 的StringUtils类,与String相比这个是非常的安全。对于集合的操作使用apache的CollectionUtils 、MapUtils, 相比apache工具类的执行效率也非常的高,比如StringUtils.split();
有人说过多的判断会影响性能,我个人认为这里的性能牺牲和系统的安全相比是微不足道的。

把null写在前面就好了

异常处理try catch啊

先非空判断,如果为空了什么都不好使

写个工具类,里面写个静态方法吧,这种方法可能会经常使用到

public static boolean isPositive(Integer value){
return value != null && value > 0;
]

不用Integer,用int就可以了吧,int有默认值0

如果是前台调用的话,一般会在js进行验证或者page给个初始值。主要还是看你这个方法应用场景。

先判断为不为null,再判断位不为0
因为&&为短路与,如果page是null,那么后面的判断就不会执行了,也就不会报错了
if(page!=null && page!=0){
......
}

先判断是否为空,在判断是否为0,为空如何处理。

做一下if中是否为null或""的判断,不能做判断的加try catch或其他处理异常的语句

非空判读放到前面啊。

使用StringUtils. isNotBlank(str)就可以了避免空指针,
public static boolean isNotBlank(String str)
判断某字符串是否不为空且长度不为0且不由空白符(whitespace)构成

if( null!=page && page != 0)
这样写,双与运算符 如果前一个表达式为false的话 后一个表达式就不会进行运算了 ,因此也就不会出现空指针了