java throw 空指针_Java 空指针和异常

到底什么是空指针?如何从根源上避免空指针?

空:内存地址

指针:引用

异常:运行时

63bd8411f6ecf19983b53f753d90b2ba.png

出现空指针的几种情况:

第一种情况:调用了空对象的实例方法

User user = null;

user.print();

第二种情况:访问了空对象的属性

User user = null;

System.out.print(user.name);

第三种情况:当数组是一个空对象的时候,取它的长度

User user = new User();

System.out.print(user.address.length);

第四种情况:null 当作Throwable的值

CustomException exception = null;

throw exception;

第五种情况:方法的返回值为null,调用方法直接去使用

User user = new User();

System.out.print(user.readBook());

如何避免出现空指针异常?

使用之前一定要初始化,或者检查是否初始化

尽量避免在函数中返回NULL,或给出详细的注释(良好的编程习惯)

外部传值,除非有明确的说明(非NULL),否则,一定要即使判断

......

实际案例:

1)直接打印的时候

System.out.print(request.getParameter("username"));

改为:

if(request.getParameter("username")){

System.out.print(request.getParameter("username"));

}else{

throw exception;

}

2)给对象重新赋值的时候又调用

User user = new User();

Tools tool = new Tools();

user = tool.getUser();

user.print();

改为:

user = tool.getUser() == null ? new User() : tool.getUser();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值