Article View: japan.comp.lang.visual-c++
Article #23Re: コンストラクタ内を避けるべき処理
From: 電子のお針箱
Date: Sat, 06 May 2000 00:00
Date: Sat, 06 May 2000 00:00
59 lines
3325 bytes
3325 bytes
Yuki Shiino <yuki@cds.ne.jp> wrote in message
news:8ev2fq$pqb$1@news.cds.ne.jp...
> > > コンストラクタは返り値を持たないので、
> > >エラーの発生する処理をある程度避けるべきだと思っていますが、
> >
> > この基準の意図がわかりません。エラーを返しにくいと言うことですか ? 例
> > 外処理で十分と思いますが...。
>
> > 必要なエラー処理は全て入れ、エラー発生は例外で伝えます。
>
> エラーの別の通知法としては、エラー状態を保持するというものも
> あります。
そうでした。実は例外処理でエラーを返すとまずいケースと言うものもあります。
静的に宣言されるオブジェクトは例外処理ができませんから、このように使うことが
想定されるオブジェクトでは、エラー状態を保持しておいて静的メンバ変数/関数等
で伝える必要があります。
> ifstream fin("DataFile");
> if (!fin) error(); // if (fin.fail()) error();
>
> の様なパターンです。
また、エラーの種別によっては上記のようなエラー処理の方がやりやすいこともあ
りますね。
> 例外を投げた方が良いのか、エラー状態を保持
> した方が良いのかは、複数の判断基準によって決まる難しい問題でしょ
> う。
おっしゃる通りです。
> 問題はifstreamの様な例なのでしょう。果してファイルのオープン
> までコンストラクタで行う必要があるのか。メンバ関数(open())に処
> 理を任せれば良いのではないか。しかしコンストラクタでファイルの
> オープンまで出来た方が便利かもしれないし、「入力ストリーム」を
> 用意するという目的を考えると寧ろオープンすべきかもしれない。
> 果してコンストラクタでどこまで処理を行うべきだろうか。
> おそらく質問の核心はここにあるのでしょう。(違っていたらご指
> 摘下さい。)
プログラムセンスが問われる所ですね。(^_^)
> > > 諸兄の経験に基づくご意見をいただければと思います。
> > > みなさまはどのような基準をお持ちでしょうか?
>
> 難しい質問なので答え難いです。
と言うか一般解は得られにくいので、どう言うコンストラクタを想定しているかに
依存しますね。一般的に...と言われると、「状況による。」と言う答えしか得られ
ないと思います。
--
--------------
電子のお針箱
ueno@di.mbn.or.jp
(From: ヘッダーはスパム対策のため -nospam を付加しています。)
--------------
Technical Details
Message-ID:
<8f0mbv$gtn$2@newsjp.mbn.or.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<8es3l3$kas$1@pin2.tky.plala.or.jp><8eu2vv$pun$1@newsjp.mbn.or.jp> <8ev2fq$pqb$1@news.cds.ne.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: f71b3,d8108d20cf4aa80b X-Google-Attributes: gidf71b3,public X-Google-Thread: 10a2c7,d8108d20cf4aa80b X-Google-Attributes: gid10a2c7,public From: 電子のお針箱 <ueno-nospam@di.mbn.or.jp> Subject: Re: コンストラクタ内を避けるべき処理 Date: 2000/05/06 Message-ID: <8f0mbv$gtn$2@newsjp.mbn.or.jp> X-Deja-AN: 619905131 Content-Transfer-Encoding: 7bit References: <8es3l3$kas$1@pin2.tky.plala.or.jp><8eu2vv$pun$1@newsjp.mbn.or.jp> <8ev2fq$pqb$1@news.cds.ne.jp> X-Priority: 3 Content-Type: text/plain; charset="iso-2022-jp" X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200 X-Complaints-To: news@mbn.or.jp X-Trace: newsjp.mbn.or.jp 957603007 17335 210.144.154.114 (6 May 2000 08:50:07 GMT) Organization: MediaBank,Tokyo,JAPAN X-MSMail-Priority: Normal Mime-Version: 1.0 NNTP-Posting-Date: 6 May 2000 08:50:07 GMT Newsgroups: japan.comp.lang.visual-c++,fj.comp.lang.c++