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

來源:互聯網
上載者:User

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

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

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

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

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

// AbnomalTest.cpp : 定義控制台應用程式的進入點。//#include "stdafx.h"#include <iostream>#include <afx.h>using namespace std;class triangle  //定義一個三角形的類{public :float a,b,c,d;  //三角形三邊a,b,c,海倫公式常量dfloat 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;}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.