TaPL の例外の章を読んでいたら、例外がよくわからないことがわかったのでまとめる。 例外はなくてもなんとかなる これについて議論の余地はないと思うが、たんにプログラムを書くことを目的とすれば、例外は必要ない。 実際に C などの言語には例外が存在しない。返り値や call/cc などの別の仕組みで例外的状況を通知することができる。 しかし、 C を書いていればわかるように、例外がないとプログラムが冗長になる。 すべての関数呼び出しの後で返り値が予想された値であることをチェックする必要がでてくる。 Haskell では Either や Maybe など、処理の失敗を通知するための型が用意されていて、モナドをベースとした便利な構文が用意されているので、 C よりはチェックを書かなくてよい。 多くのプログラミング言語が例外を持つ理由は、たんにプログラムを書きやすく、読みやすくなるからである。