システム開発では、よく例外処理をどうするのかという問題が“例外なく”指摘される。現にぼくも開発のジレンマのひとつとして「実業務のさまざまな例外をコンピュータ上に乗せるか否か」ということを言ってきた。
しかしながら、よく考えてみると例外とはいったいどういうことを指しているのだろうか。めったにないこと、予想外のこと、決まったことから外れたこと、そう言ったところでそれが大事(必須)なことであれば例外ではないはずだ。
ということは、まずは重要なことであれば、それがめったに起きることであっても例外とは言わないのだろう。そして、それはシステムに組み込まれる。しかし、10年に1回しかないことを定例というのだろうか。
では逆に重要でなければ無視すればいいと考えられるのなら、システムには例外というものがないである。もっと正確にいうと最初に設計したときには例外というものはないということになる。
だから、例外というのは運用のときに出てくる問題なのである。最初に設計した、プロセス、ルール、データのそれぞれの定義から外れたことやものが出てきたときに初めて例外処理という問題が生じる。
設計・開発の段階から例外を予想するというのは矛盾するのである。予想できないから例外なのだから。じゃあどうしたらいいのだろうか。それはシステムを動かしながら柔軟に例外を吸収できるようにしておくことである。
具体的に言うと、例外が発生したら、それは人間系で処理できるようにしておくことだ。そして、例外が続くことがあるが、そうしたらそれは例外ではなくなるわけだから、ITシステムに組み込んでいくというやり方である。
細かいアクションまでITにのせ、さらに自動化しようなんてすると、この問題にぶち当たる。従って、最初からどうやって例外処理を開発しようなんて思わないほうがいい。“ゆるい”ものは人間の“やわらかさ、しなやかさ”で受けて、“かたく”なったらITに組み込むという姿がいいと思うのである。
