🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: [VC++5.0]try、catch、throw(例外処理)の使い方は?

#29
From: 電子のお針箱
Date: Sat, 01 Apr 2000 00:00
59 lines
2709 bytes
Kou Yamanaka <kou-yamanaka@aichi.email.ne.jp> wrote in message
news:8c43e7$154$1@father.asahi-net.or.jp...

>  VC++5.0を使っているのですが、
> try,catch,throw(例外処理)の使い方がよくわかりません。
>  次のようなコードを書いている場合、
> どのようにして例外処理を使ったらいいのでしょうか?

  例外処理を使うには、例外が発生する可能性のあるところを try で囲んで、その
ブロックの直後に例外処理ルーチンを catch() で指定します。また、メモリー不足
等のエラーを検出したら throw ステートメントで例外を発生させます。

  と言うことで、こんな感じかな...

static char *xnew(size_t size)
{
  char *p = new char[size];
  if(p == NULL){
    throw 0;  // 例外の発生 (オペランドの 0 はダミーです。)
  }
  return p;
}

BOOL Sample(size_t size1, size_t size2)
{
  BOOL bRet = FALSE;
  char *pBits[DATA_SIZE];
  for(int i = 0; i < DATA_SIZE; i++){
    pBits[i] = NULL;
  }
  // ...
  try {    // 例外が発生したら catch() へ制御を移す...
    pBits[0] = xnew(size1);
    // ...
    pBits[1] = xnew(size2);
    // ...
    bRet = TRUE;
  }
  catch(int x){  // 例外が発生したらここへ来る...
  }
  i = DATA_SIZE;
  while(0 < i--){
    if(pBits[i] != NULL){
      delete [] pBits[i];
    }
  }
  return bRet;
}

  なお、throw ステートメントのオペランドで指定した値は catch() ルーチンの引
数として渡されます。今回は、特に渡すべき値が無いのでダミーとして 0 を渡して
います。

--
--------------
電子のお針箱
ueno@di.mbn.or.jp
(From: ヘッダーはスパム対策のため -nospam を付加しています。)
--------------
Technical Details
Message-ID: <8c4hep$gsi$1@newsjp.mbn.or.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <8c43e7$154$1@father.asahi-net.or.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 10a2c7,75a98fe59882a168
X-Google-Attributes: gid10a2c7,public
X-Google-Thread: f71b3,75a98fe59882a168
X-Google-Attributes: gidf71b3,public
From: 電子のお針箱 <ueno-nospam@di.mbn.or.jp>
Subject: Re: [VC++5.0]try、catch、throw(例外処理)の使い方は?
Date: 2000/04/01
Message-ID: <8c4hep$gsi$1@newsjp.mbn.or.jp>
X-Deja-AN: 605188587
Content-Transfer-Encoding: 7bit
References: <8c43e7$154$1@father.asahi-net.or.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 954583321 17298 210.144.154.107 (1 Apr 2000 10:02:01 GMT)
Organization: MediaBank,Tokyo,JAPAN
X-MSMail-Priority: Normal
Mime-Version: 1.0
NNTP-Posting-Date: 1 Apr 2000 10:02:01 GMT
Newsgroups: japan.comp.lang.visual-c++,fj.comp.lang.c++