首页 > 编程语言 >公司新入职一个中级 Java 开发,4 行代码写出了 3 个异常,我真的服了。。

公司新入职一个中级 Java 开发,4 行代码写出了 3 个异常,我真的服了。。

时间:2022-10-26 09:47:40浏览次数:89  
标签:getChannelNo 中级 Java NPE channelNo equals 新入 null

作者:l拉不拉米
链接:https://juejin.cn/post/7031445206152577061

一、前言

Hello 大家好,我是l拉不拉米,今天带来一个真实案例,让大家更深刻的理解空指针异常

公司刚入职了一名中级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);

推荐一个开源免费的 Spring Boot 最全教程:

https://github.com/javastacks/spring-boot-best-practice

分析与解决

有经验、技术扎实的同学看到这里应该或多或少能发现问题了。其实啊,这四段代码是作者精心设计的,可谓是卧龙凤雏

标签:getChannelNo,中级,Java,NPE,channelNo,equals,新入,null
From: https://www.cnblogs.com/javastack/p/16827192.html

相关文章

  • Java如何删除字符串中指定字符呢?
    转自: http://www.java265.com/JavaJingYan/1618734141298.html字符串:  字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字......
  • JavaScript对象RegExp1和JavaScript对象RegExp2
    JavaScript对象RegExp1RegExp:正则表达式对象1.正则表达式1.单个字符:[]如:[a][ab][a-zA-Z0-9_]特殊符号代表特殊含义的单个字符\d:单......
  • 【JavaSE】网络编程
    1.网络编程概述网络编程的目的:直接或者间接地通过网络协议与其他计算机实现数据交换,进行通讯。网络编程两个主要的问题:①如何精准地定位网络上的一台或多台主机,并定位......
  • Java多线程(3):ThreadPool(下)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 除了可以通过ThreadPoolExecutor自定义线程池外,同StreamAPI中的Collectors一样,多线程里的Executors类也提供了一组相关......
  • 没有Java开发环境的计算机中,在15分钟内完成一个“Helloworld”的Java程序
    一,下载JdK【1】打开浏览器,搜http://www.java.com/zh_CN搜索框“免费Java下载”进入下载页框(会有推荐下载)若版本不正确,点击"查看所有Java文件"选正确的版本......
  • 【Java技术总结】Spring事务失效总结
    事务方法必须是public,private、protected、default都会失效。@ServicepublicclassUserService{@Transactionalprivatevoidadd(UserModeluserModel){......
  • 多日Java小结
    今天已经是学习Java的第12天了,但是总觉得自己的进度真的很慢,现在还没学到循环,但是感觉前面的知识依然还没有消化,所以先小结一下吧。 首先,记住了Java的基本格式,publicst......
  • Javaweb基础复习------EL表达式+JSTL-if&foreach
    EL表达式------简化JSP页面的Java代码主要功能是------获取数据(语法:${data})举例://ServletDemo1.javapackagecom.example.servlet;importcom.example.pojo.User;i......
  • 使用 JSTL 报错:javax/servlet/jsp/tagext/TagLibraryValidator
    jsp使用jstl,访问页面之后报错,如上图所示。我的Tomcat版本是10.0,导入的jstl是javax.servlet下的,应该导入以下几个包:<dependency><groupId>mysql</groupId>......
  • JavaScript实现 -- 顺序搜索
    顺序搜索顺序搜索是一种寻找某一特定值的搜索算法,按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止。顺序搜索是最简单的一种搜索算法。思路遍历数组,并对......