平々毎々(アーカイブ)

はてなダイアリーのアーカイブです。

いまさら検査例外

検査例外が非検査例外より安全だなんて神話だと思う。

で、なぜ C# に検査例外の仕組みがないのか……に関してはいろんな理由があるそうなのですが、一つの大きな理由は、CLR の多言語対応のためだとか。確かに C#VB などは、言語仕様に検査例外の仕組みを導入することもできたと思うのですが、COBOL などをはじめとする言語では、言語仕様に検査例外の仕組みを導入することが難しいのは確か。

それはそうと。

「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり - じゅんいち☆かとうの技術日誌
非チェック例外多用作戦のトレードオフ認識 - 都元ダイスケ IT-PRESS
オブジェクト指向と型システムの狭間で例外を考える - プログラマーの脳みそ
例外処理について、私はこう思う - プログラミング言語を作る日記
非検査例外に萌えるわけ - じゅんいち☆かとうの技術日誌

クラスライブラリを作るときと、アプリケーションフレームワークを作るときと、アプリケーションを作るときでは、抽象度が変わるから見方が変わると思う。

使いやすいAPI(例外も含め)を設計するのって、おれにはかなり難しいことで、それに検査例外が加わってくると難しさが何割か増すように感じられるなあ。

もちろん、必要があると信じて設計するんだけど、設計の正しさってよくわからない。

たとえばJavaではSocketException is a IOExceptionだけども、.NETではそうじゃない。これは.NETの例外設計が間違ってるのか?というとそんなこともない。

たとえばJavaではDriverManager.getConnection() throws SQLExceptionだけど、DBへの接続文字列が間違ってた場合なんかはIOException派生の別例外でもいいんじゃないのかと思うこともある(異論は認める)。

精進しよう。

.NETのクラスライブラリ設計 (Microsoft.net Development Series)

.NETのクラスライブラリ設計 (Microsoft.net Development Series)