抛出空指针java.lang.NullPointerException的异常所导致的系统崩溃,很多情况下是由于类型转换错误所引起的,本文所举得的例子,是笔者在开发过程中经常碰到的,
Date转String
原始代码
//获取一个订单
Order order = getOrder();
//获取订单的送货时间,并转换为String
String strCreateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(order.getSendTime());
一般而言,订单的送货时间都是从数据库中取出的,现在我们假设写生成订单的哥们比较偷懒,程序健壮性一般,new Order时,sendTime设为NULL,那么以上代码就会直接抛java.lang.NullPointerException异常导致系统或APP直接崩溃。
修改后代码
if(order.getSendTime()!=null){
String strCreateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(order.getSendTime());
}
Object转String
原始代码
//获取一个订单
Order order = getOrder();
//获取订单的送货时间,并转换为String
String strOrder= order.toString();
以上代码,一旦order对象为空,那么系统就直接奔溃了。
修改后的代码
if(order==null || order.toString().trim().equals("")){
strOrder= "";
}else{
strOrder= order.toString();
}
字符串截取
原始代码
String orderNo = "H20160325010";
String orderType = orderNo.substring(0,1);
以上代码,如果orderNo不小心传了一个空字符串进来,就会抛异常。
修改后的代码
String orderNo = "H20160325010";
if(orderNo.length()>0){
String orderType = orderNo.substring(0,1);
}
总结,我们在转换类型或者对字符串操作时,都应该注意,事先做个判断,以免引起崩溃。