Бросить исключение или вернуть ноль
Если у меня есть функция ниже, с двумя вариантами
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Я предполагаю, что я спрашиваю, является ли это правильным местом для создания исключения? то есть я ничего не могу с этим поделать, если он попадет в ситуацию. Является ли это классифицированным как «исключительный»? или я должен проверить, что возвращает мой метод (что делает мой код ужасным). Если я знаю, что он не должен возвращать ноль, тогда я должен выбросить исключение, верно?
Кроме того, как бы я выбрал, какое исключение, или расширил бы одно и бросил свое собственное?