gpt4 book ai didi

java - NPE 防守 v try/catch ?

转载 作者:行者123 更新时间:2023-12-02 12:01:31 26 4
gpt4 key购买 nike

我并不提倡抓 NullPointerException因为它始终是一种代码气味/惰性方法。但是,考虑一下您想要访问嵌套 bean 深处的字段。

防御性 NPE 检查

if (  null != a && null != a.b() && null ! = a.b().c() && null !=   a.b().c().d() ) 
{
doSomething( a.b().c().d().e );
}

惰性 NPE 检查

try
{
doSomething( a.b().c().d().e );
}
catch(NullPOinterException npe)
{
}

两个问题:

  1. 性能

    在什么深度[a,b,c....z,如上例所示],较重的 try/catch 比防御性 NPE 检查更有效?

  2. 可读性

    在什么深度[a,b,c....z,如上例所示],try/catch 比多个 && 更具可读性?

请不要回答“重构嵌套 bean”:-)

最佳答案

尝试使用可选:

Optional.ofNullable(a)
.map(A::b)
.map(B::c)
.map(C::d)
.map(d -> d.e)
.ifPresent(()->X::doSomething);

不确定它是否更具可读性。但有时,Optional 看起来好像是一个正在寻找使用方法的类。

关于java - NPE 防守 v try/catch ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47219151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com