快速会用c++异常捕获机制(一个程序几行代码)
整理了网上流传的经典三角形代码,添加了自己理解的内容。
最终一个目的,就是先会用c++中的try catch 块。然后深入领悟c++的错误机制。
在这里拿出来,想与大家分享,有什么写的不对的地方,或者什么写的欠妥的地方,
或者有什么可以更好地改进的地方,都很欢迎提出来。
文在这里也同样不胜感激之情。
[cpp]
// AbnomalTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <afx.h>
using namespace std;
class 易做图 //定义一个三角形的类
{
public :
float a,b,c,d; //三角形三边a,b,c,海易做图式常量d
float s; //三角形面积
public:
易做图(){}
易做图(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[])
{
易做图 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;
}
补充:软件开发 , C++ ,