zoukankan      html  css  js  c++  java
  • 空指针异常 自动拆箱 防止 NPE,是程序员的基本修养 本手册明确防止 NPE 是调用者的责任。

    空指针异常

    空指针异常是指java中的异常类。
     
    中文名
    空指针异常
    外文名
    NullPointerException
    当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:
    • 调用 null 对象的实例方法。
    • 访问或修改 null 对象的字段。
    • 将 null 作为一个数组,获得其长度。
    • 将 null 作为一个数组,访问或修改其时间片。
    • 将 null 作为 Throwable 值抛出。

     NPE(java.lang.NullPointerException): 空指针异常。

    11.关于基本数据类型与包装数据类型的使用标准如下:

    1) 【强制】所有的 POJO 类属性必须使用包装数据类型。

    2) 【强制】RPC 方法的返回值和参数必须使用包装数据类型。

    3) 【推荐】所有的局部变量使用基本数据类型。

    说明:POJO 类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何 NPE 问题,或 者入库检查,都由使用者来保证。

    正例:数据库的查询结果可能是 null,因为自动拆箱,用基本数据类型接收有 NPE 风险。

    反例:比如显示成交总额涨跌情况,即正负 x%,x 为基本数据类型,调用的 RPC 服务,调用不成功时, 返回的是默认值,页面显示为 0%,这是不合理的,应该显示成中划线。所以包装数据类型的 null 值,能 够表示额外的信息,如:远程调用失败,异常退出。

    https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(华山版).pdf

    10.【推荐】方法的返回值可以为 null,不强制返回空集合,或者空对象等,必须添加注释充分 说明什么情况下会返回 null 值。

    说明:本手册明确防止 NPE 是调用者的责任。即使被调用方法返回空集合或者空对象,对调用者来说,也 并非高枕无忧,必须考虑到远程调用失败、序列化失败、运行时异常等场景返回 null 的情况。

    11.【推荐】防止 NPE,是程序员的基本修养,注意 NPE 产生的场景:

    1) 返回类型为基本数据类型,return 包装数据类型的对象时,自动拆箱有可能产生 NPE。 反例:public int f() { return Integer 对象}, 如果为 null,自动解箱抛 NPE。

    2) 数据库的查询结果可能为 null。

    3) 集合里的元素即使 isNotEmpty,取出的数据元素也可能为 null。

    4) 远程调用返回对象时,一律要求进行空指针判断,防止 NPE。

    5) 对于 Session 中获取的数据,建议进行 NPE 检查,避免空指针。

    6) 级联调用 obj.getA().getB().getC();一连串调用,易产生 NPE。 正例:使用 JDK8 的 Optional 类来防止 NPE 问题。

  • 相关阅读:
    eclipse里面自动添加get和set方法
    初探内联方式的 onload="doSomething()"为何要加"()"?而js代码的 onload="doSomething" 和 addEventListener 为何不加"()"?
    ubuntu下安装git,sublime,nodejs
    ajax学习计划
    ajax学习笔记
    滑动窗口思路精髓总结
    Java给定一个字符串,分割字符串使得每个子字符串都是回文串,求最少分割次数
    顺时针打印
    戳气球最少需要几下一样的题
    ip覆盖算法
  • 原文地址:https://www.cnblogs.com/rsapaper/p/11880806.html
Copyright © 2011-2022 走看看