Die Beispiele hier sind ja normal nicht der "Normalfall", also ist es kein Problem da mit einer
Exception zu reagieren.
Exceptions haben auch den Vorteil, dass sie entweder "automatisch" angezeigt werden oder man sie außerhalb und sogar viel weiter oben via Try-Except abfangen/behandeln kann.
Und ja, es gibt auch andere Wege, wo man
zum Boolean-Result auch noch SetLastError verwendet, oder z.B. ein eigenes LastError(s)/LastErrorMessage(s)-Property, wenn ein Fehlercode alleine nicht genügend Infos bieten kann.