ах спор .. это хорошая практика? - PullRequest
1 голос
/ 08 августа 2011

Рекомендуется ли использование NullPointerException в этом случае:

/**
 * Drop the database referenced by the singleton.
 * 
 * @throws NullPointerException
 */
public static void dropDatabase() throws NullPointerException {
    if (store != null) {
        store.dropDatabase(DATABASE);
    } else {
        throw new NullPointerException("No valid database connection.");
    }
}

Ответы [ 2 ]

12 голосов
/ 08 августа 2011

Ну, это довольно бессмысленный код, потому что вы все равно получили бы NullPointerException, если бы он безоговорочно назывался store.dropDatabase.Вы не получили бы то же сообщение, но трассировка стека прояснила бы это.

В этом случае я бы сказал, что это должно быть IllegalStateException, хотя:

Сигналычто метод был вызван в незаконное или неподходящее время.Другими словами, среда Java или приложение Java не находятся в подходящем состоянии для запрошенной операции.

Звучит так же, как ситуация для меня.Я также сделал бы проверку first , например:

if (store == null)
{
    throw new IllegalStateException("No valid database connection.");
}
store.dropDatabase(DATABASE);

Таким образом, вы можете убрать все предварительные условия в начале метода, а затем сосредоточиться наосновной корпус.

С Гуава , я бы просто изменил это на:

Preconditions.checkState(store != null, "No valid database connection.");
store.dropDatabase(DATABASE);
0 голосов
/ 08 августа 2011

Все нормально.В идеале вам не нужно писать if ... else, метод dropDatabase, если использовать store любым полезным способом, автоматически сгенерирует NPE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...