首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 巧用Optional之优雅规避NPE问题

    避之不及的 NullPointerExceptionNPE : NullPointerException空指针异常是最常见的Java异常之一,抛出NPE错误不是用户操作的错误,而是开发人员的错误,应该被避免

    21110编辑于 2025-04-16
  • 来自专栏阿杜的世界

    使用Optional摆脱NPE的折磨

    背景 在Java中,如果你尝试对null做函数调用,就会引发NullPointerException(NPE),NPE是Java程序开发中的最典型的异常,对于Java开发者来说,无论你是初出茅庐的新人和还工作多年的老司机 ,NPE经常让他们翻车。 为了避免NPE,他们会加很多if判断语句,使得代码的可读性变得很差。 从软件设计的角度来看,null本身是没有意义的语义,这是一种对缺失变量值的错误的建模。 类型的值,否则就返回一个空的Optional对象 ifPresent 如果值存在,就执行使用该值的方法调用,否则什么也不做 of 将指定值用Optional封装之后返回,如果该值为null,则抛出一个NPE

    71630发布于 2019-07-15
  • 来自专栏JetpackCompose M3

    Java和 Kotlin中的常见NPE

    最近我做了很多项目经常会碰到的“噩梦”之一就是NullPointerException(NPE),因为Java允许变量为null,而在调用对象方法或属性时未做null检查,就会抛出NPE。 这种情况在Kotlin里几乎不再是问题,因为Kotlin从语言层面引入了空安全支持,彻底减少了NPE的出现概率。下面我们看看两种语言是如何应对NPE的,通过示例展示常见的编程场景。 例如,以下代码会抛出NPE,因为 a可能为null:int getStringLength(String a) { return a.length(); // 如果a是null,就会抛出NPE}方案一 这样,Kotlin可以在编译时帮助我们捕捉潜在的NPE,而不是等到代码运行时才发现。 而Kotlin将空安全直接融入类型系统,不需要额外操作即可避免NPE

    74020编辑于 2024-10-28
  • 来自专栏武培轩的专栏

    Java 8 Optional:优雅地避免 NPE

    在开始之前首先来看下什么是 NPE,以及在 Java 8 之前是如何处理 NPE 问题的。 空指针异常(NullPointException,简称 NPE)可以说是所有 Java 程序员都遇到过的一个异常,虽然 Java 从设计之初就力图让程序员脱离指针的苦海,但是指针确实是实际存在的,而 Java role); } } 但是这样的应对方式会让程序出现越来越多的 null 判定,一个良好的程序设计,应该让代码中尽量少出现 null 关键字,因此 Java 8 引入 Optional 类来避免 NPE 但并不是对 null 关键字的一种替代,而是对于 null 判定提供了一种更加优雅的实现,从而避免 NPE 问题。 Optional 类 为了更好的解决和避免常见的 NPE 问题,Java 8 中引入了一个新的类 java.util.Optional,Optional 值可以为 null,如果值存在,调用 isPresent

    1.5K30发布于 2019-10-24
  • 来自专栏国产程序员

    Java14新特性:增强NPE NullPointerException

    不幸的是,如果在第2行是一个包含了多个方法调用的赋值语句(如getLocation()和getCity()),那么任何一个都可能会返回null。实际上,变量user也可能是null。因此,无法判断是谁导致了NullPointerException。

    79630发布于 2020-03-31
  • 来自专栏雨临Lewis的博客

    Java - foreach循环报NPE空指针异常

    前言 最近debug时忽然发现,如果一个集合赋值为null,那么对该集合进行foreach循环(也叫增强for循环)时,会报NPE(即空指针异常NullPointerException)。 foreach循环只会自动跳过遍历空的集合,如果对于null值的集合,就会直接报NPE

    2.4K20编辑于 2022-01-11
  • 来自专栏腾讯云代码分析

    【规则分享】C++条件逻辑NPE

    ://git.code.tencent.com/Tencent_Open_Source/CodeAnalysis 背景介绍 ▼ 日常编码时,开发者有时可能会没理清楚逻辑,就会制造出一些逻辑上的NPE

    25010编辑于 2024-11-13
  • 来自专栏翎野君

    【Java 8】巧用Optional之优雅规避NPE问题

    避之不及的 NullPointerException NPE : NullPointerException 空指针异常是最常见的Java异常之一,抛出NPE错误不是用户操作的错误,而是开发人员的错误,

    63610编辑于 2023-05-12
  • 来自专栏第三方工具

    java开发规范 RestController Apollo logger params T data NPE page

    1.@Valid @RequestBody MyAppWorkOrderRequestVO orderRemarkListRequestVO 缺少 @RequestBody 注解,否则数据无法接收 2. apollo配置 请求接口的全路径,需要检查是相对路径还是绝对路径 3.catch (Exception e) { 添加错误日志打印。。排查日志的时候方便确定问题。 log.error("getRenyunRemarkInfo error:",e); return ResponseData.error(); } 4. String orderNo,String remarkCode 方法的这两个参数 位置反了。。传参数的时候,需要一一对应,否则参数的接收含义反了,有问题 5. T data; 转换的默认是String,然后再二次转换List对象 JSON.parseArray json转换,T 转换的是字符串,然后再对字符串再转换对象。JSON处理

    13310编辑于 2024-10-09
  • 来自专栏码农小胖哥的码农生涯

    Java 是如何优雅地处理NPE问题的

    前言 对于 Java 开发者来说,null 是一个令人头疼的类型,一不小心就会发生 NPE (空指针) 问题。也是 Java 语言为人诟病的一个重要原因之一。 在我们消除可恶的 NPE 问题之前我们要回顾一下 Java 中 null 的概念。 2. NPE 问题的解决 很多时候我们对数据是否存在有自己的期望,但是这种期望并不能直接被我们掌控,一个返回值为 null 所表达的意思并不明确过于模糊,往往通过是否判断为 null 来规避空指针问题。 它的意义不仅仅帮我们简化了 NPE 问题的处理,同时也是 Java 函数式编程的一个重要辅助。我们接下来将对其 API 进行讲解以帮助你在实际开发中使用他们。

    2.4K22发布于 2019-12-10
  • 来自专栏程序猿DD

    4 行代码写 3 个NPE异常,服了!

    然而就在匹配的逻辑中,上线后报了个NPE,这是作为一名中级开发不应犯的简单错误,新人被我狠狠的训了,记生产事故一次。 二、事故重现 伪代码 说明:伪代码并非真实线上代码,只是为了更方便,更形象的重现事故现场而编写的;真实的业务场景往往更加复杂,NPE的漏洞隐藏在更深处,不易code view出来,也不易测试出来;生产环境 NPE是较常见的异常,希望大家不要纠结为什么测试没测出来,关键还是通过这样一个案例了解NPE的原因和解决方案。 短短四行代码居然凑齐了3个NPE,我枯了/(ㄒoㄒ)/~~ 我们逐行分析: 第一行分析 channelDao.getOne()如果返回为null,那么调用getChannelNo()会报NPE。  = Optional.ofNullable(channelDao.getOne()).orElse(""); 第三行分析(1) thirdDataList如果为null,那么调用stream()会报NPE

    40610编辑于 2022-09-14
  • 来自专栏一个会写诗的程序员的博客

    Spring @Autowired npe example:Why your Spring @Autowired component is null

    因此,报错:空指针异常NPE。 ---- 另外,也有其他的常见的 Spring @Autowired npe example, 特摘录如下: The Spring framework makes heavy use of Inversion blog.csdn.net/liruichuan/article/details/101367819 [2].https://github.com/chrylis/spring_autowired_npe_example [3].https://github.com/chrylis/spring_autowired_npe_example/tree/nonworking [4].https://www.moreofless.co.uk

    1.5K20发布于 2020-09-11
  • 来自专栏创作是最好的自我投资

    你遇到过哪些触发NPE的代码场景?

    前序对于程序员来说,遇到NPE场景应该算是很正常的情况了。不管是在本地开发环境或者是在测试环境,总是会时不时的遇到NPE场景。 其实遇到NPE场景并不可怕,相对于程序一些其他异常来说,NPE异常属于众多异常中最容易排查,最容易定位问题,也最容易解决的异常场景。 NPE场景虽然说NPE场景容易排查容易解决,但是在Java编程实践中,空指针异常(NPE)是开发过程中常见的障碍,它不仅阻碍了代码的正常运行,还常常成为系统不稳定性的根源。 先来说说NPE 空指针异常...NPE可以说,在日常开发中或多或少的都会遇到NPE的场景,即便你在开发过程中很谨慎,但是导致NPE的场景并不完全是由代码决定的,也可能是数据导致的。 如何处理NPE其实代码开发过程中遇到NPE并不可怕,关键是如何去处理这些NPE。你可以选择在功能开发完成之后通过单元测试来测试代码的健壮性。

    39310编辑于 2024-09-27
  • 来自专栏艾小仙

    ShardingSphere分库分表schema名称导致NPE问题排查记录

    问题现象 数据库做了分库分表,在需要查询多表数据进行 merge 的时候发生了一个 NPE 的异常。 SqlSessionTemplate.java:427) ~[mybatis-spring-2.0.6.jar:2.0.6] ... 95 more 问题排查 跟踪到报错的地方,发现是这个地方的schema是个null,从而引发了 NPE 所以很显然,这里获取不到正确的schema名称,导致了这个 NPE 的异常,那么问题是这个schemas是怎么加载进来的呢? 进入这个方法,瞬间就真相大白了,原来在put的时候对所有的schemaName进行了小写处理,所以在最上面我们去get的时候肯定会拿到一个空值,最终导致merge的时候发生了 NPE 异常。

    1.2K10编辑于 2023-02-24
  • 来自专栏墨鬓

    《Java 开发手册》解读:三目运算符为何会导致 NPE

    当其中的操作数为 null 值时,会导致 NPE 。本文将详细剖析 NPE 出现的原因,重新梳理相关知识点,并进一步扩展,帮助大家彻底理解这个问题。 文末福利:下载《Java 开发手册》解读电子书。 nullBoolean : simpleBoolean; 以上三种情况,都会在执行时发生 NPE。 所以,《Java 开发手册》中提到要高度注意第二位和第三位表达式的类型对齐过程中由于自动拆箱发生的 NPE 问题,其实还需要注意使用三目运算符表达式给变量赋值的时候由于自动拆箱导致的 NPE 问题。 至此,我们已经介绍完了《Java 开发手册》中关于三目运算符使用过程中可能会导致 NPE 的问题。 扩展思考 为了方便大家理解,我使用了简单的布尔类型的例子说明了 NPE 的问题。

    2K00发布于 2020-07-30
  • 来自专栏翎野君

    Dating Java8系列之巧用Optional之优雅规避NPE问题

    翎野君/文 避之不及的 NullPointerException NPE : NullPointerException 空指针异常是最常见的Java异常之一,抛出NPE错误不是用户操作的错误,而是开发人员的错误

    35810编辑于 2024-01-05
  • 来自专栏JAVA

    告别NPE噩梦:彻底解决Java NullPointerException的根源与实践(附代码)

    那么,NPE究竟是“魔鬼”还是“天使”?它固然烦人,但也迫使我们编写更严谨、更健壮的代码。本篇博客将带你: 深入理解NPE的本质。 ️‍♀️ 揭秘NPE出现的常见场景和深层原因。 } } 运行上述代码,你会在控制台看到经典的NPE错误信息。记住,NPE不是一个“指针错误”,而是“引用为空”的错误,它意味着你试图操作一个不存在的对象。 NPE的常见“犯罪现场”:原因大揭秘! ️‍ ♀️ NPE之所以普遍,是因为它可以在多种情境下发生。了解这些常见的“犯罪现场”,是预防NPE的第一步。 1. 对象引用为null,却尝试调用其方法或访问其字段 这是最直接、最常见的NPE原因。 它强制你在访问值之前明确地处理 null 的可能性,从而有效避免NPE。这是解决链式调用NPE的利器。 编写单元测试:用测试发现隐藏的NPE 单元测试是发现代码潜在NPE的有效手段。通过编写覆盖各种边界条件和异常路径的测试用例,可以提前发现那些在正常逻辑下不易暴露的NPE

    1.2K20编辑于 2025-05-21
  • 来自专栏苏三说技术

    生产环境一次诡异的NPE问题,反转了4次

    1.起因 有个周一的早上,我去公司上班,查看邮件,收到我们老大转发的一封邮件,让我追查线上的一个NPE(NullPointException)问题。 我当时没费吹灰之力,就访问到了NPE的sentry报错页面(其实只用鼠标双击一下就搞定)。 这个NPE问题表面上,已经有答案了。根据以往的经验,由于在代码中没有做兼容处理,在mq消费者服务中获取到的用户信息为空,对一个空对象,调用它的方法,就会出现NPE。 折腾了半天,NPE问题还是没有着落。 我回头再仔细看了那个自定义的RocketMQTemplate类,发现里面重写的方法:asyncSend,它包含了5个参数。 所以这个NPE问题影响范围很小,只是那个商户没有收到某个通知而已。 有个好习惯,就是把跟核心业务逻辑无关的代码,放在事务之外,防止出现问题时,影响主流程。

    63630编辑于 2022-08-25
  • 来自专栏java金融

    万恶的NPE差点让我半个月工资没了

    防止 NPE ,是程序员的基本修养 NPE(Null Pointer Exception)一直是开发中最头疼的问题,也是最容易忽视的地方。 记得刚开始工作的时候所在的项目组线上出现最多的bug不是逻辑业务bug而是NPE,所以后面项目组出了一个奇葩的规矩,线上如果谁出现一个NPE的问题就罚款100元,用作团建费用。 不过自从这个规矩实施以来,线上的NPE就渐渐的少了,从最初的一个月团建一次到最后的半年团建一次。大家写代码都比较谨慎了,只要用到对象或者集合的时候二话不说上来先判空,所以产生的NPE就少了。 User getUserById(@NotNull Integer id); 其他需要注意的NPE switch中的空指针异常 看下面的列子妥妥的NPE public static void main 使用 Collection 接口任何实现类的 addAll()方法时,都要对输入的集合参数进行NPE 判断。 ? 三目运算符可能产生NPE ?

    53230发布于 2020-08-05
  • 来自专栏翎野君

    非空注解@NonNull与@NotNull使用错误导致传参为空时报NPE

    新上线了一个需求后,发现时不时的有一些NullPointerException报出来,跟踪后发现都是在一个地方报出来的

    63540编辑于 2023-05-26
领券