エラー処理の場合分けと多態性の話

自分用まとめ。これだけだとちょっと内容が抽象的すぎるかも。
0
まじかんと @tnacigam

ふと思ったのだが、 instanceof で型を動的に調べるのはアンチパターンで、代はりに多態性を使へといふのなら、catch 文で例外の型を選別するのも良くないはずだね

2013-05-04 12:56:06
まじかんと @tnacigam

@tnacigam 後から (そのクラスの外から) 多態性を追加できない点が、クラスによる多態性の問題

2013-05-04 13:11:57
まじかんと @tnacigam

@tnacigam ところで、検査例外の仕組みはどの型の例外を処理する必要があるか検査してくれるが、一般の instanceof による場合分けをする場合、どの型に関して場合分けをすべきなのか型システムは何も教へてくれない

2013-05-04 13:28:21
まじかんと @tnacigam

@tnacigam では、例外の代はりに直和型あるいは列挙型を使ふとどうか。これなら、確かに外から場合分けを追加することができるが……

2013-05-04 13:38:10
まじかんと @tnacigam

@tnacigam ある種のエラーは catch して処理するがその他のエラーはそのまま呼出元に伝播させる、といふ様なことは、検査例外の仕組みの中でうまく機能する。

2013-05-04 13:43:38
まじかんと @tnacigam

@tnacigam しかし直和型や列挙型の場合、取りうる値の一部を除いたサブタイプを手軽に作れないと、「特定のエラーだけ呼出元に伝播させる」とかいったことがとてもやりにくい。

2013-05-04 13:44:31
まじかんと @tnacigam

OCaml の多態バリアントって他の言語にはないんですかね?

2013-05-04 14:11:04