亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ex21.cpp

?? c++代碼,來源于網(wǎng)上.c++代碼,來源于網(wǎng)上c++代碼,來源于網(wǎng)上.
?? CPP
字號:
  
          //  第21章   異常處理技術(shù)


   // [例21.1] C++異常處理技術(shù)
	# include <stdio.h>
	long DivThrow(long x,long y)
	{	if(y==0) throw x;
		return x/y;
	}
	void ExceptHanding(long u,long v)
	{	try
		{	 long	d=DivThrow(u,v);
		     printf("ExceptHanding %d/%d=%d\n",u,v,d);
		}	
		catch(long x)
		{ printf("ExceptHanding=%d. Can't divided by zero\n",x);		}
	}
	void main()
	{	ExceptHanding(5,3);       //輸出結(jié)果ExceptHanding 5/3=1
	    ExceptHanding(5,0);       //輸出結(jié)果ExceptHanding=5. Can't divided by zero
	}
    //[例21.2]if語句加靜態(tài)變量的跟蹤
	# include <stdio.h>
	enum {NoZero=1,IsZero=1000};
	static int sTrace=NoZero;
	long DivideIf(long x,long y)
	{	if(y==0){ sTrace=IsZero; return x;  }
		return x/y;
	}
	void TraceHanding(long u,long v)
	{	long d=DivideIf(u,v);
		switch(sTrace)
		{	case NoZero: printf("TraceHanding %d/%d=%d\n",u,v,d);break;
			case IsZero:  printf("TraceHanding %d. Can't divided by zero\n",d);break;
		}
	}
	void main()
	{	 TraceHanding(6,2);          //輸出結(jié)果TraceHanding 6/2=3
	    TraceHanding(2,0);          //輸出結(jié)果TraceHanding 2. Can't divided by zero
	}

//[例21.3] 異常的多路捕獲
	# include <stdio.h>
	enum enumType {eChars,eLong,eClass,eUnknown,eSkip};
	class ClassE{};
	struct Unknown{};
	void PolyHanding(int kind)
	{   if(kind==eSkip) throw eSkip;               //這個throw語句匹配外層的try塊
		try
		{ if(kind==eChars)   throw "string type";      //
	     if(kind==eLong)    throw (long)kind;
		 if(kind==eClass)     throw ClassE();           //throw顯式調(diào)用構(gòu)造函數(shù)
		 if(kind==eUnknown) throw Unknown();          //調(diào)用缺省構(gòu)造函數(shù)Unknown()  
		}		
	    catch(char* s)		{ printf("Except Handler is=%s\t",s);}
  	    catch(long)		{ printf("Except Handler is long type\t");}
	    catch(ClassE)		{ printf("Except Handler is ClassE type\t");}
	    catch(...)			{ printf("Except Handler is Unknown type\t");	}
		printf("Embeded try~catch block is not skip\n");
	}
	void main()
	{	try 
		{	PolyHanding(eChars);               //程序內(nèi)部的異常在內(nèi)部有效處理
			PolyHanding(eLong);                //流程依次執(zhí)行函數(shù)調(diào)用
			PolyHanding(eClass);
			PolyHanding(eUnknown);           //程序內(nèi)部的異常在內(nèi)部有效處理
			PolyHanding(eSkip);	            //函數(shù)調(diào)用引發(fā)外層try塊的throw語句
			PolyHanding(eLong);               //這兩個函數(shù)調(diào)用是程序的死碼區(qū) 
			PolyHanding(eClass);
		}
		catch(enumType)                        //攔截梅舉類enumType的異常流
		{   printf("Embeded try~catch block is  skipped\n");	}	 
		printf("this printf  is a must  route\n");     //這個printf語句是流程的必由之路
	}              //輸出如下:

//[例21.4] 異常的重新拋出
   # include <stdio.h>
    enum  {eLong,eUnknown,eSpecial};
	struct Unknown{};
    class Special{};
	void fa(int kind)
	{   try {
          if(kind==eSpecial) 	    throw Special();
		  if(kind==eUnknown)     throw Unknown();
		}		
	    catch(Special)	{ printf("fa Rethrowing Special Exception out\n");
		  throw;    //相當(dāng)于 throw Special()到上層fb的 catch(Special)入口
		}
	    catch(...)	   { printf("fa Rethrowing Unknown Exception out\n");
		  throw;     //相當(dāng)于throw Unknown()到上層fb的catch(...)
		}	
	    printf("normal process in fa\t");	
	}
	void fb(int kind)
	{  try	{ fa(kind);}
	   catch(Special)
		{ printf("fb Rethrowing Special Exception out\n");
		  throw; //相當(dāng)于 throw Special()到上層fc的 catch(Special)入口
		}
	    catch(...)	{  printf("Unknown Exception  treated here in fb\n");}
	    printf("normal process in fb\n"); 
	}
	void fc(int kind)
	{ 	try
		{  fb(kind);	
		 if(kind==eLong)    throw (long)kind; 
		}
		catch(long)		{ printf("long type Exception is in fc \n");}	   
	    catch(Special)		{ printf("Special Exception  is treated here in fc \n");}
	}
	void main()	{	fc(eLong);		fc(eUnknown);		fc(eSpecial);	}
//[例21.5]異常過程中對象的清除
     #include<stdio.h>
	class ClassB 
	{	public:	int m_b;
		ClassB(int n=1) {m_b=n;printf("%d.ClassB::ClassB(),this=%p\n",m_b,this);}
	    ~ClassB()     {       printf("%d.ClassB::~ClassB()\n",m_b);}		
	};
	class ClassC 
	{    public:	int m_c;  
		ClassC(int n=2) 	{m_c=n;printf("%d.ClassC::ClassC(),this=%p\n",m_c,this);}
		~ClassC()      {   printf("%d.ClassC::~ClassC()\n",m_c);   }
		void Show()     {   printf("Show m_c=%d,this=%p \n",m_c,this); }
	};
	enum {eObjc=888,eObjh=3};
	void fa(int k)
	{	if(k==eObjc) {
			printf("send local Objc with k=%d\n",eObjc);
			throw ClassC(k);	                       //直接拋出一個無名對象
		}
		ClassB objb(2);                              //中間定義一個局部對象objb2
		ClassC *pObjc=new ClassC(k);                //定義一個Heap空間的對象
		printf("send Heap obj with k=%d\n",k);
		   throw pObjc;                              //無過濾條件的拋出對象指針
		printf("this code area is dead block\n");             //死碼區(qū)
		delete pObjc;	
	}
	void fb(int k)
	{	printf("Enter regular routine with k=%d\n",k);
		try{ 	ClassB objb(1);                           //定義局部變量objb1
		    fa(k);
		}
	    catch(ClassC objc )                            //接受數(shù)值對象的入口處理器
		{   printf("local Objc received\n");
		    objc.Show();	
		}
		catch(ClassC *p=NULL )                       //接受對象指針的入口處理器 
		{	if(p!=NULL)
			{   printf("Heap Obj received\n");
				p->Show();
				delete p;
			}		
		}	
	}
	void main()	{   fb(eObjc);          fb(eObjh);		}
//[例21.6]繼承層次catch處理器的先后次序
    #include<stdio.h>
	class B  
	{	public: int m_b;
	    B (int n=1)    {m_b=n;printf("B::B()this=%p\n",this);}
			virtual ~B (){printf("B::~B()this=%p\n",this);}
			virtual int HandleError();			
	};
	class C : public B 
	{ public:	int m_c;  
		C()    {m_c=2;printf("C::C()this=%p\n",this);}
		virtual ~C(){printf("C::~C()this=%p\n",this);}		
		virtual int HandleError();	 
	};
	class D : public C
	{   public:	int m_d;  
		D(){m_d=4; printf("D::D()this=%p\n",this);}  			
		virtual ~D(){printf("D::~D()this=%p\n",this);}
		virtual int HandleError();  
	};
    int B::HandleError()	{printf("B::HandleError()this=%p\n",this);return 1;}
	int C::HandleError()	{printf("C::HandleError()this=%p\n",this);return 0;}
	int D::HandleError()	{printf("D::HandleError()this=%p\n",this);return 1;}
	enum{classb,classc,classd,etype1,etype2};
	int   ErrorInfo(int k) //對錯誤消息進(jìn)行分流的函數(shù)
	{ switch(k)
	  {	case etype1: return etype1;
		case etype2: return etype2;
	    default :    return etype2+1;
	  }    
	}
	void ThrowHandler(int k)
	{   switch(k)                               //throw的表達(dá)式先完成副作用
		{ case classb: throw B();                   //拋出基類的無名對象
		  case classc: throw C();                   //拋出直接派生類對象
		  case classd: throw D();                   //拋出間接派生類對象
          default :    throw ErrorInfo(k);           //拋出其它錯誤消息
	    }	                                   
	}
	void VirtualHandling(int k)
	{	try  {ThrowHandler(k); }                  //拋出兩種類型的異常
		catch(B & rBase) {                         //基對象的引用形參
			rBase.HandleError();		              //對象別名虛擬調(diào)用虛函數(shù)
		}	
		catch(int k)                                  //捕獲整型數(shù)值類型消息
		{  switch(k)                                 //消息根據(jù)具體的數(shù)值分流
			{ case etype1: printf("etype1 Error treated here\n");break;
			  case etype2: printf("etype2 Error treated here\n");break;
			  default:    printf("a type Error treated here\n");break;
			}
		}	
	}
	void DerivedFirst(int k)                    
	{    try      {ThrowHandler(k);}
		//catch(B  b){b.HandleError();}	 //警告'class D' : is caught by base class ('class B ')
		catch(D d)  {d.HandleError();}	 //間接派生類對象數(shù)值形參catch塊置于前面
		catch(C c)  {c.HandleError();}	//直接派生類對象數(shù)值形參catch塊置于中間
		catch(B b)  {b.HandleError();}	//基類對象數(shù)值形參catch塊置于最后
        catch(int ) { printf("a int  Error treated here\n");	}	
	}
	 void main()
	 {  ////VirtualHandling(etype2+7);輸出結(jié)果a type Error treated here
	    VirtualHandling(classd); 	            DerivedFirst(classc);	
	 }



318



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文一区在线播放| 久久99久久99| 99精品欧美一区二区三区综合在线| 久久综合av免费| 丁香激情综合国产| 亚洲丝袜自拍清纯另类| 9色porny自拍视频一区二区| 国产精品国产成人国产三级| 欧美在线视频你懂得| 亚洲成人av免费| 精品国产麻豆免费人成网站| 国产一区二区电影| 亚洲免费在线看| 欧美一区三区二区| 国产高清成人在线| 一区二区成人在线观看| 91精品国产aⅴ一区二区| 韩国精品久久久| 亚洲色图一区二区| 欧美一级生活片| 大白屁股一区二区视频| 亚洲影院在线观看| 精品美女一区二区| 91精品国产乱码| 一本到高清视频免费精品| 亚洲欧美一区二区三区久本道91 | 欧美天堂亚洲电影院在线播放| 亚洲成人午夜电影| 久久你懂得1024| 日本精品免费观看高清观看| 美女mm1313爽爽久久久蜜臀| 久久伊99综合婷婷久久伊| 一本大道综合伊人精品热热 | 国产伦精品一区二区三区在线观看 | 欧美一二三区在线观看| 懂色av一区二区三区免费观看| 一区二区三区四区中文字幕| 精品欧美乱码久久久久久| 色综合视频一区二区三区高清| 美美哒免费高清在线观看视频一区二区 | 欧美午夜精品一区二区三区| 国产综合久久久久久久久久久久| 最新国产精品久久精品| 欧美成人性战久久| 在线免费不卡电影| 成人毛片在线观看| 精品中文av资源站在线观看| 亚洲精品成人a在线观看| 国产亚洲欧美在线| 欧美电影精品一区二区| 一本大道久久a久久综合| 国产一区在线精品| 美女视频一区二区| 图片区小说区区亚洲影院| 1区2区3区欧美| 国产精品无圣光一区二区| 欧美成人免费网站| 制服丝袜亚洲播放| 欧美午夜免费电影| 91久久精品国产91性色tv | 激情小说亚洲一区| 日本视频中文字幕一区二区三区| 1024亚洲合集| 国产精品超碰97尤物18| 国产视频一区在线观看| 精品少妇一区二区| 日韩欧美国产综合| 日韩一区二区在线看| 91精品国产综合久久香蕉麻豆| 欧美色图片你懂的| 欧美三级日韩在线| 欧美私人免费视频| 欧美日韩视频在线第一区| 国产精品二区一区二区aⅴ污介绍| 欧美本精品男人aⅴ天堂| 精品欧美黑人一区二区三区| 日韩欧美综合一区| 日韩视频中午一区| 亚洲精品在线观看网站| 久久久久九九视频| 国产精品麻豆99久久久久久| 国产精品日日摸夜夜摸av| 亚洲欧美在线视频| 亚洲精品va在线观看| 亚洲在线观看免费| 欧美aaaaa成人免费观看视频| 全部av―极品视觉盛宴亚洲| 久久www免费人成看片高清| 国产一区二区在线电影| 国产成人aaa| 色又黄又爽网站www久久| 欧美视频中文字幕| 精品日韩欧美在线| 久久毛片高清国产| 亚洲天堂av一区| 午夜久久久影院| 国产一区久久久| 96av麻豆蜜桃一区二区| 欧美色综合网站| 欧美www视频| 国产精品国产精品国产专区不蜜 | 亚洲精品日产精品乱码不卡| 亚洲成人动漫在线观看| 国产一区二区三区香蕉| 制服.丝袜.亚洲.中文.综合| 欧美日本一道本| 精品人在线二区三区| 国产精品国模大尺度视频| 亚洲一区在线看| 狠狠网亚洲精品| 99国产精品久久| 欧美一区二区三区免费在线看| 国产亚洲欧美中文| 亚洲高清视频的网址| 精品综合久久久久久8888| av不卡在线播放| 精品少妇一区二区三区| 亚洲精品日韩综合观看成人91| 麻豆精品一区二区av白丝在线 | 北岛玲一区二区三区四区| 在线免费一区三区| 久久网站最新地址| 亚洲成人精品一区| 国产99久久久国产精品免费看| 欧美亚洲一区二区三区四区| 亚洲精品一区二区三区蜜桃下载 | 日韩欧美亚洲国产精品字幕久久久| 国产精品日韩成人| 美女在线观看视频一区二区| 97精品国产露脸对白| 欧美大片免费久久精品三p| 18成人在线观看| 国产大陆亚洲精品国产| 欧美电影在哪看比较好| 亚洲色图在线播放| 成人免费看的视频| 日韩欧美成人午夜| 九九视频精品免费| 在线成人免费视频| 亚洲男人的天堂在线观看| 国产成人h网站| 欧美v日韩v国产v| 日本不卡一二三| 欧美色图第一页| 亚洲欧美一区二区三区孕妇| 东方aⅴ免费观看久久av| 欧美sm美女调教| 蜜臀av一级做a爰片久久| 欧美日韩精品一区二区在线播放| 中文字幕一区二区三区在线不卡 | 久久新电视剧免费观看| 蜜桃视频第一区免费观看| 欧美日韩精品一区二区三区蜜桃 | 精品久久久三级丝袜| 午夜精品久久久| 欧美在线视频你懂得| 亚洲欧美另类综合偷拍| 91亚洲国产成人精品一区二区三| 久久久久久**毛片大全| 国产乱码精品一区二区三区av| 日韩色视频在线观看| 麻豆国产一区二区| 欧美成人乱码一区二区三区| 蜜桃视频一区二区三区在线观看| 欧美一级生活片| 精品一区二区三区不卡| 日韩欧美中文一区二区| 久久精品99国产精品日本| 精品福利在线导航| 国产精品自产自拍| 国产精品污网站| 99久久久免费精品国产一区二区| 国产精品久久久久影院亚瑟| heyzo一本久久综合| 一区二区三区欧美日韩| 欧美吻胸吃奶大尺度电影 | 欧美精品一区二区三区视频| 六月婷婷色综合| 久久精品人人做人人综合| 国产一区二区三区在线观看免费 | 91一区在线观看| 亚洲精品成人在线| 欧美精三区欧美精三区| 免费看日韩a级影片| 久久亚洲私人国产精品va媚药| 国产精品中文有码| 亚洲欧美色图小说| 欧美日韩精品一区二区在线播放| 麻豆成人91精品二区三区| 日本一区二区三区在线观看| 91在线精品一区二区三区| 午夜精品福利一区二区蜜股av| 欧美一区二区久久| 国产成人啪免费观看软件| 亚洲欧洲日产国码二区| 欧美剧在线免费观看网站| 国产精品123| 一区二区不卡在线视频 午夜欧美不卡在| 91精品麻豆日日躁夜夜躁| 国产一区二区伦理|