🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: japan.comp.lang.visual-c++
Article #23

Re: コンストラクタ内を避けるべき処理

#23
From: 電子のお針箱
Date: Sat, 06 May 2000 00:00
59 lines
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-mail
References: <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++