Die
Exception schmeißen müsste ich also so oder so, nur ist die Frage, ob dies an zentraler Stelle (außerhalb der Funktion) oder dezentral (evtl. mit genaueren Informationen) innerhalb der Funktion geschieht.
Und genau an der Stelle sind Exceptions genau richtig. Es handelt sich um eine Ausnahme vom regulären Programmablauf und du kannst an der Stelle nicht weitermachen und auch der Aufrufer kann an der Stelle nicht ohne Fehlerbehandlung weitermachen. Damit das korrekt behandelt werden kann, lieferst du mit der
Exception die nötigen Informationen. Genau dafür sind Exceptions da.
Das hat an der Stelle auch nichts mit Programmsteuerung zu tun. Dafür sind sie, zumindest in den allermeisten Fällen in der Tat ungeeignet.