作者 主題: c++的例外處理  (閱讀 4800 次)

0 會員 與 1 訪客 正在閱讀本文。

Quota

  • 活潑的大學生
  • ***
  • 文章數: 352
    • 檢視個人資料
    • http://home.kimo.com.tw/jiannrongkimo/
c++的例外處理
« 於: 2008-03-02 14:22 »
請教一個問題,如果我想在c++內做例外的判斷
為何我分子輸入5 分母輸入a
跑出5/2=2.5
而不是例外呢?
謝謝!
附上程式碼如下:

#include <iostream>
   #include <stdlib.h>
   using namespace std;
   class fraction
   {
   private:
       int numerator;
       int denominator;
   public:
       void set_value()
       {
           cout << "輸入分子:";
           cin >> numerator;
           cout << "輸入分母:";
           cin >> denominator;
       }
       void print_value()
       {
           try
           {
               if (denominator==0)
               {
                   throw 0;
               }
               else if (denominator<0)
               {
                   throw " ~~分母<0 這樣是不行的 ";
               }
               else
               {
                   cout << numerator << "/" << denominator << "=";
                   cout << double (numerator)/double(denominator) << endl;
               }
           }
           catch(int err)
           {
               cout <<"有問題"<<endl;
           }
           catch(const char* str)
               { cout <<str<<endl;   }
           catch(...)
           {
               cout <<"其他錯誤"<<endl;
           }
       }
   };

   int main()
   {
       fraction X;
       X.set_value();
       X.print_value();
       system("pause");
       return 0;
   }

darkranger

  • 榮譽學長
  • 俺是博士!
  • *****
  • 文章數: 1370
    • 檢視個人資料
    • http://darkranger.no-ip.org
回覆: c++的例外處理
« 回覆 #1 於: 2008-03-02 19:49 »
兩個變數在使用前沒歸零

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
回覆: c++的例外處理
« 回覆 #2 於: 2008-03-08 22:26 »
5/2(5除以2)=2.5 沒錯啊,當然不會產生例外事件。

Quota

  • 活潑的大學生
  • ***
  • 文章數: 352
    • 檢視個人資料
    • http://home.kimo.com.tw/jiannrongkimo/
回覆: c++的例外處理
« 回覆 #3 於: 2008-03-10 11:27 »
5/2(5除以2)=2.5 沒錯啊,當然不會產生例外事件。

可是,現在的問題是
我分母輸入a  ,而不是2...

elleryq

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 908
  • 性別: 男
    • 檢視個人資料
    • Thinking more...
回覆: c++的例外處理
« 回覆 #4 於: 2008-03-18 14:09 »

試試把 denominator 印出來看看?
Plan your work, then work your plan.
我的首頁:http://blog.elleryq.idv.tw
351899by http://counter.li.org