2017-01-18 73 views
-2

我知道getFlightKey在初始化本身時返回null。它應該爲空,因爲我使用我的代碼爲兩種類型的用戶構建apks。對於一個用戶,使用「飛行鑰匙」,而對於另一個用戶則不使用。如何處理條件語句內的空指針異常

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()將是無效的,但我怎麼可以添加類似的東西爲null檢查處理呢?

+0

可能是'try {//你的代碼} catch(NullPointerException npe){//在這裏處理它}'? – Vikrant

+0

抓NPE不是不好。 – Baabidi

+0

這是更好嗎? 'assert getFlightMetadata()。get()。getFlightKey()!= null'? – Vikrant

回答

-1

如果要同時處理與同一段代碼的情況,你可以做這樣的事情

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

     } 
現在

,relace getFlightMetadata().get().getFlightKey()這與value,它不會爲null,而不是將有空白值或沒有值,但不會爲空。

+0

這不是一個好的解決方案。捕捉NPE是需要避免的。 –

+0

是的,但是通過他提供的信息或他編碼的方式,這看起來更好的解決方案,就好像它沒有任何價值,那麼它將是空的或它將具有一定的價值。所以你應該檢查空指針異常的發生 –

+0

這是我的問題,它與此類似。 http://stackoverflow.com/questions/40991307/try-catch-vs-long-if。 –