Ich würde das ganze in eine Funktion auslagern welche keine
Exception wirft sondern einen Fehlercode zurück gibt. Wenn verschiedene Fehler aufgetreten sind können mehrere Bits gesetzt werden.
Ich bin der Meinung: Wenn eine Funktion mehrere Aufgaben zusammenfasst soll sie mir auch nicht alles im einzelnen zurück geben sondern auch Fehler etc. entsprechend zusammenfassen bzw. selbständig behandeln.