4 行代码写 3 个NPE异常,服了!
作者:l拉不拉米
来源:https://juejin.cn/post/7031445206152577061
一、前言
公司刚入职了一名中级Java开发
,经过一个星期的适应学习,各方面表现还不错,于是分配了一个小的迭代给新人做。
需求很简单,把从第三方拉取的数据匹配到自身公司后台设置的渠道后,聚合到一个列表中,批量入库。
然而就在匹配的逻辑中,上线后报了个NPE,这是作为一名中级开发不应犯的简单错误,新人被我狠狠的训了
,记生产事故一次。
二、事故重现
伪代码
说明
:伪代码并非真实线上代码,只是为了更方便,更形象的重现事故现场而编写的;真实的业务场景往往更加复杂,NPE的漏洞隐藏在更深处,不易code view出来,也不易测试出来;生产环境NPE是较常见的异常,希望大家不要纠结为什么测试没测出来,关键还是通过这样一个案例了解NPE的原因和解决方案。
// 后台设置的渠道
String channelNo = channelDao.getOne().getChannelNo();
// 第三方拉取的数据
List<ThirdData> thirdDataList = httpClientUtils.getThirdDatas(DateUtils.today());
// 匹配过滤
thirdDataList.stream().filter(o ->channelNo.equals(o.getChannelNo())).collect(Collectors.toList());
// 批量入库
thirdDataDao.saveAll(thirdDataList);
分析与解决
有经验、技术扎实的同学看到这里应该或多或少能发现问题了。其实啊,这四段代码是作者精心设计的,可谓是卧龙凤雏
4 行代码写 3 个NPE异常,服了!相关推荐
- 直击面试现场:神级程序员仅100秒,60行代码写出俄罗斯方块,成为全公司焦点!...
小编我今天逛论坛看到一位HR帖子直播公司面试情况,该公司是做棋牌APP的,现在正在招聘前端工程师和运营人员,HR直播的是前端这块的,有写游戏的也有做网站项目的,写特效的都有很多,但是这位HR却看上了一 ...
- [教你做小游戏] 用86行代码写一个联机五子棋WebSocket后端
我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权.我独立开发了<联机桌游合集>,是个网页,可以很方便的跟朋友联机 ...
- Python将一行代码写成多行和把多行代码写成一行的方法
一行代码写成多行 1.使用反斜杠连接 a, b ,c = 1, \2, 3 2.直接换行使用小括号连接 a, b ,c = (1,2, 3) 3.对于字符串使用三个单引号 a = '''1 + 2 + ...
- 如何用76行代码写一个AI微信机器人......
本期博客主要介绍如何使用 微信SDK 和 AI聊天接口 ,实现 微信机器人功能. 准备 电脑需要安装Go环境,这个可以直接参考菜鸟教程:Go 语言环境安装,知道CSDN的同学基本能在半小时内装好吧- ...
- 3行代码写出8个接口,开挂了?
欢迎关注方志朋的博客,回复"666"获面试宝典 肯定有不少人会想:这怎么可能呢? 就算用几乎零配置的 SpringBoot,写一个最简单的接口也得有 3 行代码啊! @Reques ...
- 都说Djnago框架重,那就让哥用15行代码写个django web程序!
很多初学django的小伙伴都会了解到,django是个大而全的网络框架,本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能.要学这么多内容,要学到猴年马月啊!? 不过世界真是奇妙, ...
- python爬虫代码1000行-简单用14行代码写一个Python代理IP的爬虫
相信用别的语言只用14行是写不出来这样的效果的!而我们的Python 只需要区区的14行代码就能写出来哦! 这就是Python为什么是全球现在比较流行的语言之一了!因为简单 容易学! 比较上手! 现在 ...
- c语言程序员写贪吃蛇代码28,厉害了,程序员28行代码写贪吃蛇游戏,附源码!...
对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...
- 记事本贪吃蛇游戏代码_厉害了,程序员28行代码写贪吃蛇游戏,附源码!
对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...
最新文章
- YOLOv5在建筑工地中安全帽佩戴检测的应用
- 软件工程第二次作业——结对编程
- Trie UVALive 7192 Chip Factory (15长春J)
- .NET 获得指定XML配置文件内容
- 【学习笔记】利润中心会计初识
- 关于SAP Cloud for Customer Cloud Application Studio登录失败的问题
- Oracle 常用sql场景应用(未完待续......)
- DS博客作业06--图
- Linux下汇编语言学习笔记13 ---
- linux 目录sbit,linux中SUID,SGID与SBIT的奇妙用途详解
- 三种新型DDoS反射攻击出现
- Java 并发编程实战-创建和执行任务的最佳实践
- windows 驱动开发使用的一些工具
- 掠过和记黄埔IDC机房
- 默认暴露,分别暴露,整体暴露的再次学习及常用知识
- Mac升级python3版本
- Android开发框架大全
- 怎么设置锤子手机显示无服务器,锤子手机远程协助怎么使用 锤子手机远程协助使用教程【详解】...
- 硬件设计4---什么是电感、磁珠?
- 样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)