盘点最常见且坑爹的Java事故现场,你中招了几个?


前言

jdk作为我们每天必备的调用类库,里面大量提供了基础类供我们使用.可以说离开jdk,我们的java代码寸步难行,jdk带给我们的便利可谓是不胜枚举,但同时这些方法在使用起来也存在一些坑,如果不注意就很容易掉入到陷阱里面,导致程序抛出错误。jdk中的很多方法都不会做非null判断,可能设计jdk的作者默认开发者已经处理好null值了.不过这个设计可能会造成很严重的后果,实在是暗藏杀机。比如今天早上我们查了一笔订单没有退款,查了一早上最终才发现是同事写的代码的BigDecimal的subtract方法的值没有做非null判断处理导致程序抛出了空指针异常,看似简单的异常却直接无法让很多订单退款,实在是小问题造成大事故。而要修补退款这个问题,要耗费很多时间去修补,出错的成本太高,本期我们就来看看jdk中那些坑你没商量的方法,这些方法很常见,相信你一定遇到过。


一:String.valueOf()方法的陷阱

案发现场:某个鸟语花香的早上,我们在开心的敲着代码,突然客户群有人投诉反映,我们发给用户的短信有部分是尊敬的"null"你好,xx等。开发第一时间看了代码,觉得没有问题啊,为什么短信内容会出现用户名为null呢,不是经过了非空判断的吗?String.valueOf()是String提供的一个类型转换的方法,我们来看一下(代码简化过后的):

// 调用用户服务根据用户id获取用户信息        
Map<String, Object> userInfo = userService.getUserInfoById(userId);
Object userNameObject = userInfo.get("name");
String userName = String.valueOf(userNameObject);
// 判空
if(userName!=null&&userName.length()>0) {
   
      String message = getMessage(userName
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值