そんなに変ですか?
失敗したときにSetLastErrorでエラーコード設定しておいて、例外で抜けるようにしておけば、
呼び出し元のコードで失敗を処理するか、放置するか選択できて、
特に、失敗頻度が低いであろうコードで見通しのよいコードになると思ったのですが...