当前位置:  开发笔记 > 编程语言 > 正文

如何在o = objectA.objectB.objectC操作中完美地捕获Java NullPointerException?

如何解决《如何在o=objectA.objectB.objectC操作中完美地捕获JavaNullPointerException?》经验,为你挑选了1个好方法。

不像C或C++,如果Java中的任何一个对象(A,B)都为null ,o = objectA.objectB.objectC则抛出一个NullPointerException.在Java 1.7中,我无法执行任何像lambda表达式这样的命令来运行带try-catch保护的命令.

那么,你将如何完美地缓存异常呢?



1> Bathsheba..:

可悲的是,Java中没有任何"传播空"运算符,尽管之前有人谈过它.(符号o = objectA?.objectB?.objectC被提出).

在您的情况下,您需要依次检查每个部分:

if (objectA == null){
    o = null;
} else {
   /*OType*/ p = objectA.objectB;
   o = p == null ? null : p.objectC;
}

纯粹使用三元条件运算符也是一种可能性,但这意味着您需要objectA.objectB在多个位置写入.

将表达式包含在try catch块周围对我来说似乎很粗糙,因为NullPointerExceptions如果链包含函数,它可以扼杀合法(尽管这是直接字段访问的一个有争议的点).但它易于阅读,并且对于长链更好地扩展:

try {
    o = objectA.objectB.objectC;
} catch (final java.lang.NullPointerException e){
    o = null;
}

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有