非例外ベースでのエラー処理の問題は

・下位で発生したエラーを上位に伝達するのがマンドクセ(ステータスだけ
 なら戻り値でいいが、詳細なエラー情報を返すシンプルな方法は無い)

・かと言って下位でエラー検出したその都度ダイアログ表示とかやって
 しまうと、後でエラー処理方法を変更したい場合に困る(こっちから呼んだ
 時はダイアログ表示しないでログに吐くだけにしてくれとか)。

・エラーが発生しても、それをどう扱うかは上位次第(ファイルがオープン
 できなくても別の方法で処理続行するようなケースもあるし、その場合
 ダイアログ表示なんてして欲しくない)。下位側でエラー処理方法が決め
 打ちされてるのは、上位側から見ると汎用性が薄くて使いにくい。

・呼び出しがネストしてる時に、一気に最上位まで戻れない(ステータス
 返して1段1段戻って行くしかない)

辺りで、こういうのは例外使えば解決できる。
(というか例外が無ければすっきりとは行かない)