您的位置:首页 > 编程语言 > C语言/C++

快速会用c++异常捕获机制(一个程序几行代码)

2012-10-30 14:09 218 查看
整理了网上流传的经典三角形代码,添加了自己理解的内容。

最终一个目的,就是先会用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,海伦公式常量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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐