程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 快速會用c++異常捕獲機制(一個程序幾行代碼)

快速會用c++異常捕獲機制(一個程序幾行代碼)

編輯:C++入門知識

整理了網上流傳的經典三角形代碼,添加了自己理解的內容。

最終一個目的,就是先會用c++中的try  catch 塊。然後深入領悟c++的錯誤機制。

在這裡拿出來,想與大家分享,有什麼寫的不對的地方,或者什麼寫的欠妥的地方,

或者有什麼可以更好地改進的地方,都很歡迎提出來。

文在這裡也同樣不勝感激之情。

[cpp] 
// AbnomalTest.cpp : 定義控制台應用程序的入口點。 
// 
 
#include "stdafx.h" 
#include <iostream> 
#include <afx.h> 
using namespace std; 
 
 
class triangle  //定義一個三角形的類 

    public : 
        float a,b,c,d;  //三角形三邊a,b,c,海倫公式常量d 
        float s;        //三角形面積 
    public: 
        triangle(){} 
        triangle(float a1,float b1,float c1) 
        { 
          a=a1; 
          b=b1; 
          c=c1; 
        } 
        //判斷是否是三角形 
        string judgment() /*throw ( string )這裡叫做異常的規范*/ 
        { 
          string  temp; 
          int TempNum; 
          if((a+b)<c ||(a+c)<b || (c+b)<a) 
           { 
            TempNum=9; 
            temp="不是三角形"; 
            wcout<<temp.c_str ()<<endl; 
 
            throw(TempNum);   
             
           } /*用throw拋出,並不是在控制台可視輸出,而是專門用catch來接著,然後做處理*/ 
          else 
          { 
               /*locale loc("chs");
              wcout.imbue(loc);*/ 
             
              temp="是三角形"; 
              cout<<temp.c_str()<<endl; 
              throw(temp); 
           } 
        } 
        void dimension()//計算面積  
        { 
          d=(a+b+c)/2;        //海倫公式 
          s=sqrt(d*(d-a)*(d-b)*(d-c)); 
        } 
}; 
 
int _tmain(int argc, _TCHAR* argv[]) 

     
    triangle a(7,2,3);//僅傳值,初始化  
    try 
    { 
        a.judgment(); 
        a.dimension(); 
        cout<<"三角形a的面積為: "<<a.s<<endl; 
    } 
    //catch (string & TempErr)   //接受了,接受了,請注意,我還是定義了一個 string形的來接受的。 
    //{ 
    //   要麼用這個自己定義的catch塊要麼使用萬能捕獲塊,好像兩個不能同時使用 
    //    wcout<<TempErr.c_str()<<endl; 
    //} 
    catch(...) 
    { 
        /*locale loc("chs");
        //要麼使用這個塊輸出,要麼使用另一個輸出
        wcout.imbue(loc);   
        wcout<<L"萬能捕獲"<<endl;*/ 
 
        cout<<"萬能捕獲"<<endl; 
    } 
    return 0; 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved