NullPointerException是一种代码逻辑错误,遇到NullPointerException,遵循原则是早暴露,早修复,严禁使用catch来隐藏这种编码错误

如何避免这种错误?

  • 成员变量在定义时初始化为""
class Person {String name = "";
}

编写业务逻辑时,用空字符串""表示未填写比null安全得多。

  • 返回空字符串、空数组,而不是null
    这样可以使得调用方无需检查结果是否为null。
public String[] readLinesFromFile(String file) {if (getFileSize(file) == 0) {return new String[0]; // 返回空数组而不是null:}...
}

如果调用方一定要根据null判断,比如返回null表示文件不存在,那么考虑返回Optional<T>,这样调用方必须通过Optional.isPresent()判断是否有结果。

public Optional<String> readFromFile(String file) {if (!fileExist(file)) {return Optional.empty();}...
}

Java20:NullPointerException相关推荐

  1. java中容易产生空指针异常:NullPointerException的场景

    java中空指针异常:NullPointerException出现的根本原因是在null对象上调用方法或属性了. java中容易产生空指针异常:NullPointerException的场景,总结如下 ...

  2. Java 14 :NullPointerException的处理新方式

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | liululi 来源 | 公众号「锅外的大佬」 ...

  3. MyEclipse部署Web项目Servers报错:NullPointerException at com.genuitec.eclipse.ast.deploy.core.Deployment

    一段时间没部署web项目了,今天部署时突然报错,遂看下怎么解决. java.lang.NullPointerExceptionat com.genuitec.eclipse.ast.deploy.co ...

  4. 面试官:说说 Java 中的 Unsafe 和 CAS

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://urlify.cn/nAVjM ...

  5. Guava学习笔记:Preconditions优雅的检验参数

    在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去.对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处 ...

  6. 对象数组 NullPointerException异常--将图C++ 改为java版

    org.eclipse.debug.core.DebugException: com.sun.jdi.ClassNotLoadedException: Type has not been loaded ...

  7. 软件测试学习笔记:找代码中的fault,并设计特定的测试用例

    观察两段代码: (1) 发现代码中的错误: (2) 设计测试用例,不执行fault部分: (3) 设计测试用例,执行fault部分,但不出现error情况: (4) 设计测试用例, 出现error情况 ...

  8. Kotlin极简教程:第4章 基本数据类型与类型系统

    原文链接:https://github.com/EasyKotlin 到目前为止,我们已经了解了Kotlin的基本符号以及基础语法.我们可以看出,使用Kotlin写的代码更简洁.可读性更好.更富有生产 ...

  9. java 反射获取属性名和值_阿里P8架构师核心知识点整理:Java基础+spring原理+微服务+算法...

    Java基础 5.1.1. JAVA 异常分类及处理 5.1.1.1. 概念 如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法.在这种情况下 会抛出一个封装了错误信息的对象.此时, ...

  10. java8新特新:接口流-Stream()接口和所有方法(map,foreach,filter,count,distinct,limit,collect,skip,sorted)

    Steam<T> 接口流 类型参数: T - 流元素的类型 所有超级接口: AutoCloseable,BaseStream <T,Stream <T >> 公共接 ...

最新文章

  1. python list 查找子列_python – SQLAlchemy查询,其中列包含一个子字符串
  2. 从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
  3. 简单递推公式转换矩阵求解
  4. 如何快速开发一个 Dubbo 应用
  5. C++|Linux工作笔记-C++获取Linux中shell命令结果
  6. centos7环境下mysql5.7的安装与配置
  7. Pycharm2019版中打开.md .st文件出现卡死情况怎么办?
  8. 大三学生独自破解逆天AI模型:我只是把撩妹的时间,都用来研究机器学习了...
  9. python核心编程--笔记(不定时跟新)(转)
  10. csdn积分有什么用
  11. 新电脑如何进行磁盘分区?
  12. 小米手机android程序闪退,小米手机软件闪退是什么原因
  13. ISM频段ZigBee传输距离的估算
  14. [react] redux react-redux
  15. 【教学】深度学习小项目汇总_含源代码_包运行
  16. spoon无法初始化至少一个步骤_通俗易懂:8大步骤图解注意力机制
  17. tesseract 遇到的一些问题
  18. 24V-2A矿用本安电源设计
  19. CobaltStrike(钓鱼攻击工具)
  20. vscode 智能打印_【Vscode官方下载】Vscode中文版官方下载 v1.41.0 免费版-开心电玩...

热门文章

  1. 合同生效需要哪些要件
  2. 判断文本框输入中文超过10个英文数字超过20个
  3. 【IIS】XP系统的IIS发布
  4. 同时连接多个以及如何配置?
  5. 蓝凌oa任意文件读取,RCE
  6. SAS,软件使用中reg报错/gplot错误的解决方法。
  7. Spring实战第五章
  8. 路由器安全——破解wifi密码,同时中间人攻击
  9. 华侨大学计算机转专业要求,2021年华侨大学大一新生转专业及入学考试相关规定...
  10. 保护系统 WinXP故障恢复控制台完全指引