例外への対処
ここでの例外は、設計するアプリケーションが取り扱う領域では制御しきれない要因によって発生するもののみを扱う。代表的なものとして、ファイル入出力関連の例外が上げられる。実存するファイルを開くにはファイルが実存している必要がある。しかし、ある時点でファイルの実存を確認できたとしても、実際にファイルを開く時点では実存を完全に保証することはできない。途中で他のアプリケーションがファイルを削除したり移動したりする可能性があるためである。したがってこれは本稿で扱うべき例外である。
このような例外が発生した時、アプリケーションはどう対処すべきかを考察する。
単純な対処として考えられるのが、例外が発生するまでに行った処理を白紙に戻し、例外の発生をユーザーに通知することである。この考えは自然で、設計者にとってもユーザーにとっても受け入れやすい。したがって、例外の処理はこれを基本にすべきである。
では、「例外が発生するまでに行った処理」とは、どこまでの範囲を指しているのか。この問いに関しても、自然な指標を与えることができる。その範囲とは、ユーザーの意思決定による分岐から例外発生までである。ここで、ユーザーの意思決定は、時系列で見て例外の発生に最も近い意思決定を選択するのが妥当だろうが、状況に応じてさらに遡った意思決定を選択しても良い。
例として、ファイルを読み込みドキュメントを表示する機能を考える。ダイアログ上のボタンを押し、ファイル選択ダイアログを表示してファイルを選ばせてそれを読み込み、ドキュメントと解釈してそれを表示する。ここで発生する例外は2つである。1つ目はファイルが読み込めない例外、2つ目はファイルをドキュメントとして解釈できない例外である。これらの例外に対し、「例外が発生するまでに行った処理を白紙に戻し、例外の発生をユーザーに通知する」という戦略を適用する。その結果、ダイアログ上のボタンを押してからの処理、もしくはファイル選択ダイアログでファイルを選択してからの処理を白紙に戻し、 ファイルが読み込めなかった旨、もしくは読み込んだファイルはドキュメントではないという事をメッセージボックスで表示する、という処理をプログラムすることになるだろう。
最終更新:2009年07月25日 22:26