2017-01-18 6 views
-2

Я знаю, что getFlightKey возвращает null во время инициализации. Он должен быть пустым, поскольку я использую свой код для сборки apks для двух типов пользователей. Для одного пользователя используется «Ключ рейса», а для другого он не используется.Как обращаться с указателем Null Исключение внутри условного оператора

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

Не так ли сложно поймать НПЭ. – 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

Да, но предоставленной им информацией или способом, которым он закодировал это выглядит лучше, как если бы он не имеет никакого значения, тогда он будет null или он будет иметь некоторое значение. Поэтому вам нужно проверить наличие исключения null-указателя –

+0

Вот мой вопрос, похожий на этот. http://stackoverflow.com/questions/40991307/try-catch-vs-long-if. –