作者: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异常,服了!相关推荐

  1. 直击面试现场:神级程序员仅100秒,60行代码写出俄罗斯方块,成为全公司焦点!...

    小编我今天逛论坛看到一位HR帖子直播公司面试情况,该公司是做棋牌APP的,现在正在招聘前端工程师和运营人员,HR直播的是前端这块的,有写游戏的也有做网站项目的,写特效的都有很多,但是这位HR却看上了一 ...

  2. [教你做小游戏] 用86行代码写一个联机五子棋WebSocket后端

    我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权.我独立开发了<联机桌游合集>,是个网页,可以很方便的跟朋友联机 ...

  3. Python将一行代码写成多行和把多行代码写成一行的方法

    一行代码写成多行 1.使用反斜杠连接 a, b ,c = 1, \2, 3 2.直接换行使用小括号连接 a, b ,c = (1,2, 3) 3.对于字符串使用三个单引号 a = '''1 + 2 + ...

  4. 如何用76行代码写一个AI微信机器人......

    本期博客主要介绍如何使用 微信SDK 和 AI聊天接口 ,实现 微信机器人功能. 准备 电脑需要安装Go环境,这个可以直接参考菜鸟教程:Go 语言环境安装,知道CSDN的同学基本能在半小时内装好吧- ...

  5. 3行代码写出8个接口,开挂了?

    欢迎关注方志朋的博客,回复"666"获面试宝典 肯定有不少人会想:这怎么可能呢? 就算用几乎零配置的 SpringBoot,写一个最简单的接口也得有 3 行代码啊! @Reques ...

  6. 都说Djnago框架重,那就让哥用15行代码写个django web程序!

    很多初学django的小伙伴都会了解到,django是个大而全的网络框架,本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能.要学这么多内容,要学到猴年马月啊!? 不过世界真是奇妙, ...

  7. python爬虫代码1000行-简单用14行代码写一个Python代理IP的爬虫

    相信用别的语言只用14行是写不出来这样的效果的!而我们的Python 只需要区区的14行代码就能写出来哦! 这就是Python为什么是全球现在比较流行的语言之一了!因为简单 容易学! 比较上手! 现在 ...

  8. c语言程序员写贪吃蛇代码28,厉害了,程序员28行代码写贪吃蛇游戏,附源码!...

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

  9. 记事本贪吃蛇游戏代码_厉害了,程序员28行代码写贪吃蛇游戏,附源码!

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

最新文章

  1. YOLOv5在建筑工地中安全帽佩戴检测的应用
  2. 软件工程第二次作业——结对编程
  3. Trie UVALive 7192 Chip Factory (15长春J)
  4. .NET 获得指定XML配置文件内容
  5. 【学习笔记】利润中心会计初识
  6. 关于SAP Cloud for Customer Cloud Application Studio登录失败的问题
  7. Oracle 常用sql场景应用(未完待续......)
  8. DS博客作业06--图
  9. Linux下汇编语言学习笔记13 ---
  10. linux 目录sbit,linux中SUID,SGID与SBIT的奇妙用途详解
  11. 三种新型DDoS反射攻击出现
  12. Java 并发编程实战-创建和执行任务的最佳实践
  13. windows 驱动开发使用的一些工具
  14. 掠过和记黄埔IDC机房
  15. 默认暴露,分别暴露,整体暴露的再次学习及常用知识
  16. Mac升级python3版本
  17. Android开发框架大全
  18. 怎么设置锤子手机显示无服务器,锤子手机远程协助怎么使用 锤子手机远程协助使用教程【详解】...
  19. 硬件设计4---什么是电感、磁珠?
  20. 样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)

热门文章

  1. Java端生成二维码
  2. Auto.js 9版本 OCR 文字识别
  3. Codeforces Round #807 (Div. 2)A~E个人题解
  4. Mathematica实例——利用Mathematica演示量子力学中的波包演化
  5. vijos 清点人数
  6. 编码字符串,使得总长度最短
  7. 百度地图离线开发demo(热力图)
  8. GraphSAGE论文阅读笔记
  9. 多年锤炼,迈向Kata 3.0 !走进开箱即用的安全容器体验之旅
  10. 网关、开放平台如何设计appKey,appSecret,accessToken的生成和校验机制