Wyrzuć wyjątek lub zwróć wartość null

Jeśli mam poniższą funkcję, z dwiema opcjami

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

Z tej metody wiem, że topowinien zawsze zwracać obiekt jeden z „kawałków” zawsze jestisBlank() == true , powrót null na końcu jest po prostu dla kompilatora. Skoro tak jest, a mój kod i tak nie zadziałałby, gdyby zwrócił wartość null, czy jest to poprawne zgłoszenie wyjątku?

Moje opcje to:

zwraca wartość null, a aplikacja otrzyma wyjątek NullPointerException w niektórych przypadkach krawędzizwróć wartość null i zawiń użycie metody za pomocą sprawdzeń (myObject! = null)rzuć wyjątek, który wysadzi go w czasie wykonywania

Domyślam się, że pytam, czy to właściwe miejsce, by rzucić wyjątek? tzn. nic nie mogę na to poradzić, jeśli zajdzie taka sytuacja. Czy jest to klasyfikowane jako „wyjątkowe”, czy też nie powinienem sprawdzać, co zwraca moja metoda (co sprawia, że ​​mój kod wygląda okropnie). Jeśli wiem, że nie powinien zwracać wartości null, powinienem rzucić wyjątek w prawo?

W jaki sposób wybrałbym wyjątek lub przedłużył jeden i rzuciłby swój własny?

questionAnswers(9)

yourAnswerToTheQuestion