编程开发中,我们经常会遇到空指针null point问题,强硬如C++会引发程序崩溃无法正常工作,所以空指针在C++程序中是特别敏感的,使用者需要时时刻刻进行检测。

以下代码在cpp非常常见

Point* p = func();
if (p!=nullptr) {}

当使用java进行开发时,因为Java程序"怎么写都不会崩"的特性导致使用者产生了惰性。
在Java封装类型(Double、Long、Integer)等类型的加持下,Java程序中的NPE问题越发常见:访问空指针引发的nullpoNullPointerException异常。

尽管程序不崩,但不代表其健壮性(还需要正常处理业务呀),异常导致业务流程中断。

  • 说明:
    1、返回类型为基本数据类型,return包装数据类型的对象时,自动拆箱有可能产生NPE。
    2、RPC接口采用基本类型时,java会对其进行初始化,比如:int a ,double b 分别为0 ,0.0等,会对调用方产生误解(0不等同于null),null是无效值。
    3、局部变量使用基本数据类型减少封装包拆解损耗,局部变量需要当前使用者识别有效值无效值情况。

  • 阿里的Java编程规范要求:

关于基本数据类型与包装数据类型的使用标准如下:1) 所有的POJO类属性必须使用包装数据类型。2) RPC方法的返回值和参数必须使用包装数据类型。3) 所有的局部变量推荐使用基本数据类型。说明:POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。

NPE nullpoNullPointerException问题相关推荐

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

    公司为了保证系统的稳定性,加了很多监控,比如:接口响应时间.cpu使用率.内存使用率.错误日志等等.如果系统出现异常情况,会邮件通知相关人员,以便于大家能在第一时间解决隐藏的系统问题.此外,我们这边有 ...

  2. 记一次Nacos的issue修复之并发导致的NPE异常

    ISSUE Spring boot 应用启动被终止 #21 错误分析 DeferredApplicationEventPublisher的继承关系 import org.springframework ...

  3. 代码调用NullPointerException(NPE)

    异常信息: 空指针异常 场景: 控制调用服务代码发生异常 服务代码调用mapper发生异常 解决方案: 找到异常发生的行,找方法调用过程".", 如:xxxService.xxx( ...

  4. jdk8 npe_JDK 14中更好的NPE消息

    jdk8 npe 我的2019年3月博客文章" Java会出现更好的默认NullPointerException消息吗? "的撰写是为了获得更好的NullPointerExcept ...

  5. JDK 14中更好的NPE消息

    我的2019年3月博客文章" Java会出现更好的默认NullPointerException消息吗? "是在尚未针对特定JDK版本针对更好的NullPointerExceptio ...

  6. mockito环境配置_Mockito –使用全局配置的SmartNull在NPE上提供更好的错误消息

    mockito环境配置 编写Mockito参考卡后,我有机会仔细研究了Mockito不太流行但非常有用的功能. 其中一些过于先进或太稀少,无法在refcard中进行描述,因此应简短说明. 其中之一就是 ...

  7. Mockito –使用全局配置的SmartNull在NPE上提供更好的错误消息

    编写Mockito参考卡后,我有机会仔细研究了Mockito不太流行但非常有用的功能. 其中一些过于先进或太稀少,无法在refcard中进行描述,因此应简短说明. 其中之一就是SmartNull. 当 ...

  8. java中npe问题,【Java 8】巧用Optional之优雅规避NPE问题

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

  9. mysql npe问题_MySQL为Null会导致5个问题,个个致命!

    本文转载自微信公众号「Java中文社群」,作者磊哥.转载本文请联系Java中文社群公众号. 正式开始之前,我们先来看下 MySQL 服务器的配置和版本号信息,如下图所示: "兵马未动粮草先行 ...

最新文章

  1. Google Test(GTest)使用方法和源码解析——参数自动填充技术分析和应用
  2. JavaScript 事件——“事件类型”中“复合事件”和“变动事件”的注意要点
  3. mysql workbench 6.2.3 linux_MySQL Workbench 6.2.1 BETA 发布
  4. 抓住人工智能红利,百度AI达人养成营带你速成深度学习
  5. 怎么用matlab显示噪声,怎么用MATLAB产生噪声调频信号
  6. hibernate中cascade和inverse中的设置问题
  7. 新中大怎么修改服务器,新中大如何修改服务器地址
  8. 安卓插件化开发!移动开发程序员怎么优雅迈过30K+这道坎?全网最新
  9. 64位计算机安装xp,xp系统一键安装64位win7
  10. Qt IFW 实现自动升级
  11. mysql中date类型_MySql的日期类型datetime和timestamp
  12. 解决Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) or sock‘(2)
  13. d3,svg中如何让rect上显示文字
  14. 饥荒联机版服务器启动慢_饥荒(Don#x27;t Starve Together)腾讯云服务器搭建(unbuntu篇)
  15. android ar 动画,Android实现支付宝AR扫描动画效果
  16. 期货反跟单-侃侃人工反跟单那些事儿
  17. 玩了这么长时间抖音,这些功能你知道吗?做好这3个轻松月入过万
  18. 使用 Python 和可视化编程控制树莓派机械臂myCobot
  19. Windows安装配置Oracle
  20. shell脚本增加回车符

热门文章

  1. 我在阿里干些啥?大学怎么过,才能去大厂实习?
  2. c#反射入门篇(Reflection)——MethodInfo 发现方法的属性
  3. zadig安装winusb遭遇Error 0x800b0109
  4. 【2021牛客寒假第五场】C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和
  5. tomcat 8 群集_Tomcat群集系列第3部分:会话复制
  6. Vue+JavaScript实现鼠标滑轮滑动控制元素横向滚动
  7. redis源码修改之zincrby,hincrby命令
  8. 全网首次解密600多个AI工具汇总(三)
  9. 20张程序员才懂的搞笑图!保准你笑出猪叫......
  10. UINavigationBar 背景透明与渐变