エラー処理

以前仕事でC#で開発ツールを作成したことがある。
そのときにはじめてオブジェクト指向言語というやつに触れた。
そしてオブジェクト指向の便利さを知った。
その開発ツール作成時の課題。


例外が発生した場合にどうやってユーザにそのことを伝えるか、ということである。


簡単な例でいけば、開こうとしたファイルが存在しなかったときなどがあげられる。
一般的にはメッセージボックスに例外メッセージを表示させて


「C:\Program Files\hogehoge\hoge.txtが開けませんでした」


的なメッセージを出すことになるんだろうが、もしこの例外が、ウインドウオブジェクトからとんでもなく深い位置にあるオブジェクトからの例外だとした場合、「C:\Program Files\hogehoge\hoge.txt」というファイル名はどうやってウインドウオブジェクトまで教えてあげればいいのだろうか?
そもそもメッセージボックスを出力する役目は誰がやるべきなのだろうか?


まぁ1ファイルならさほど問題はないだろうが、システムの都合上、最後に開けなかったファイルだけをリスト形式で出力するといった場合などとにかく困る。


メッセージボックスをGUIからはるかに遠い位置のオブジェクトに出力させると、そのオブジェクトそのものの役割を逸脱しそうだし、かといってエラー出力用の引数を作ってそこにいれてもらうというのも、エラーの目的だけのために引数を増やす行為のようでなんだか気が引ける。


・・っていうか、そもそもクラス設計自体の問題だろ、とか言われそうだ。(;´Д`)