【问题标题】:How to handle Null pointer Exception inside a conditional statement如何在条件语句中处理空指针异常
【发布时间】:2017-01-18 09:02:06
【问题描述】:

我知道getFlightKey 在初始化过程中返回 null。它应该为空,因为我正在使用我的代码为两种类型的用户构建 apk。对于一个用户,使用“flight Key”,而对于另一个用户,则不使用它。

else {
            tabletMetadata = new TabletMetadata(new DateTime(), getActiveEmployeeIdentifier()
                    ,getAirFiApplication().getTabletId(),getFlightMetadata().get().getFlightKey()
                    ,flightLegIdentifier, new DateTime(), level,
                    location != null ? String.valueOf(location.getLatitude()) : null,
                    location != null ? String.valueOf(location.getLongitude()) : null, null, level, null, null);

getFlightMetadata().get().getFlightKey() 将为空,但我如何添加类似于空检查的内容来处理这个?

【问题讨论】:

  • 可能是try { // your code } catch (NullPointerException npe){ // handle it here } ?
  • 抓到 NPE 是不是很糟糕。
  • 这样更好吗? assert getFlightMetadata().get().getFlightKey() != null ?

标签: android pointers exception null


【解决方案1】:

如果你想用相同的代码处理这两个条件,你可以这样做

  String value="";
    try{
             value = getFlightMetadata().get().getFlightKey();
        }catch (NullPointerException e)
        {

        }

现在,将getFlightMetadata().get().getFlightKey() 替换为value,它不会为空,而是有空值或没有值但不会为空。

【讨论】:

  • 这不是一个好的解决方案。捕获 NPE 是要避免的。
  • 是的,但是根据他提供的信息或他的编码方式,这看起来是更好的解决方法,好像它没有任何价值,那么它将为空或有一些价值。所以你应该检查是否出现空指针异常
  • 这是我的问题,和这个类似。 stackoverflow.com/questions/40991307/try-catch-vs-long-if.
猜你喜欢
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 2016-09-11
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多