Выдать исключение или вернуть null

Если у меня есть функция, показанная ниже, с двумя вариантами выбора

private MyObject findBlank() {
    for (int i = 0; i < pieces.length; i++) {
        if(pieces[i].isBlank()){
            return pieces[i];
        }
    }
    return null;
}

private MyObject findBlank() {
    for (int i = 0; i < pieces.length; i++) {
        if(pieces[i].isBlank()){
            return pieces[i];
        }
    }
    throw new NoSuchFieldError("No blank piece found!");
}

Из этого метода я знаю, что он всегда должен возвращать объектодна из "кусков" всегда isBlank() == true, нуль в конце возвращается только для того, чтобы угодить компилятору.Поскольку это так, и мой код в любом случае не будет работать, если он вернет ноль, правильно ли это, чтобы генерировать исключение?

Мои варианты:

  1. вернуть значение null, и приложение получит исключение NullPointerException в некоторых крайних случаях
  2. вернуть значение null и обернуть использование метода проверками (myObject != null)
  3. создать исключение, которое взорвет его во время выполнения

Я думаю, что я спрашиваю, это правильное место для создания исключения? то есть я ничего не могу с этим поделать, если он попадет в ситуацию. Это классифицируется как «исключительное» или я должен проверить, что возвращает мой метод (из-за чего мой код выглядит ужасно). Если я знаю, что он не должен возвращать значение null, тогда я должен выдать исключение, верно?

Кроме того, как мне выбрать, какое исключение, или расширить его и создать собственное?

5
задан Blundell 3 June 2012 в 19:57
поделиться