当前位置:蜗牛素材网>综合资讯>图文>正文

空指针异常是不是低级错误:掌握这四种避免空指针异常的方法

人气:171 ℃/2024-01-14 08:18:21

空指针异常是导致Java程序运行中断最常见的原因,相信每个程序猿都碰见过,也就是NullPointException,我们通常简称为NPE,本文告诉大家如何优雅避免NPE。

1.数据准备

UML类关系图:

ADDRESS

2.实战:获取用户所在的城市

2.1.直接获取;容易出现空指针异常。

2.2.使用if-else判断;避免了出现空指针的问题,但是代码结构层次嵌套多,不美观

2.3.使用工具类美化一下if判断代码

2.4.使用Optional解决了层次多的问题也避免了空指针的问题,当我们配合使用orElse时,会先执行orElse方法,然后执行逻辑代码,不管是否出现了空指针。

2.5.使用断言处理接口入参,检查假设和前置条件是否满足,以及检查空值情况,提前捕获空指针异常并进行处理

2.6.使用@Nullable注解,标识变量或方法参数和返回值是否可以为 null,以便在编译期或开发工具中提示可能的 NullPointerException 风险

/** * 使用注解 @Nullable * @author 百里 */public class BaiLiNonNullDemo { public static void printString(@Nullable String str) { System.out.println(str.toString()); } @Nullable public static String getString() { RETURN null; } public static void main(String[] args) { String str = null; printString(str); getString().toString(); User user = new User(); user.getAddress().getCity(); }}CALL TO 'TOSTRING(' IS REDUNDANTON 'TOSTRING' MAY PRODUCE 'NULLPOINTEREXCEPTION'METHOD INVOCATION 'TALT ENTER ASSERT'STR ! NULL'ALT SHIFT ENTERMORE ACTIONS..JAVA.LANG.STRING@NOTNULL@CONTRACT(PURE 三 TRUE) PUBLIC STRING TOSTRING(THIS OBJECT (WHICH IS ALREADY A STRING!) IS ITSELF ROOMRETURNED.NG IN INTERFACE CHARSEQUENCESPECIFIED BY: TOSTRING INOVERRIDES: TOSTRING IN CLASS OBJECTTHE STRING ITSELF.RETURNS:< 1.8>(RTJAR)000

2.7.额外补充

JDK17优化了空指针异常信息(Helpful NullPointerExceptions) 通过精确描述哪个变量为空来提高JVM生成的空指针异常信息的可用性。 即,以前的空指针异常信息不会告诉你具体是哪个对象为null,当运行的语句是对一个嵌套结构的对象做连续的方法调用(如"a.getb().getc().xxx()")时,就需要进一步分析或调试才能判断出谁是null。而该特性加入以后则直接在异常信息中说明值为null的对象是哪个。

Java复制代码

/** * @author 百里 */public class BaiLiNpeDemo { public static void main(String[] args) { Address myAddress = new Address("123 Main St", null, "CA"); User myUser = new User("John Doe", 35, myAddress); System.out.println(myUser.getAddress().getCity().trim()); }}

执行结果:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.trim()" because the return value of "npe.Address.getCity()" is null at npe.BaiLiNpeDemo.main(BaiLiNpeDemo.java:16)

搜索更多有关“空指针异常是不是低级错误:掌握这四种避免空指针异常的方法”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
本网站部分内容、图文来自于网络,如有侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2008-2024 蜗牛素材网 All Rights Reserved. 手机版