- インスタンスの生成に失敗したら、そのオブジェクトは存在してはならない。
- 例外を投げないと、new後にIsValidObject()みたいに正当性を問い合わせなければいけないのが面倒というか二度手間で変な設計のような気がしてなんかイヤ。
- インスタンスの生成と初期化処理を分けるという解が提案されているが、初期化前の空のオブジェクトとかいうわけのわかんないものが存在することになってやっぱり二度手間で気持ち悪い。
- っていうかコンストラクタで資源解放をきちんとやってから例外を投げれば、そもそも何ら不都合はない。
- むしろ、.NET Frameworkのクラスライブラリではそれが当たり前だ。何故C++だけ禁止されるのか。
とか色々自分で考えてたけど、
http://www.aerith.net/design/constructor-exception-j.html
とか
http://www.kijineko.co.jp/tech/superstitions/dont-throw-exception-from-constructor.html
とか、
そもそもこれは迷信であると主張している人も少なからずいるようなので、
ちょっぴり安心した。
PR