忍者ブログ
すずめと一緒に踊りませんか
ブログ内検索
話題ごと
WirelessFreedom
LinkStation (ls-gl)
イーサネットコンバータ
最新コメント
最新トラックバック
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
バーコード
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

       
一部で盲目的に信じられている
「コンストラクタで例外を投げてはならない」
という教えが、どうも納得いかない。

ケースバイケースだと思う。

  • インスタンスの生成に失敗したら、そのオブジェクトは存在してはならない。

  • 例外を投げないと、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
       
■ この記事にコメントする
お名前
タイトル
文字色
URL
コメント
パスワード
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
■ コメント一覧
■ この記事のトラックバック
この記事にトラックバックする:
書き換わる値渡しの恐怖 HOME SandCastle
Copyright © すずめのおどりあし All Rights Reserved
Powered by ニンジャブログ  Designed by ピンキー・ローン・ピッグ
忍者ブログ / [PR]