Бросить исключение или вернуть ноль

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

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!");
}

Из этого метода я знаю, что этоshould always return an object один из «кусочков»; всегда естьisBlank() == true возвращаемое значение null в конце просто для того, чтобы угодить компилятору. Так как это так, и мой код не будет работать в любом случае, если он вернул значение null, правильно ли это, пожалуйста, чтобы сгенерировать исключение?

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

return null and the app will get a NullPointerException in some edge case return null and wrap the use of the method with (myObject != null) checks throw an exception which will blow it up at runtime

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

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

Ответы на вопрос(9)

Ваш ответ на вопрос