当前位置:编程学习 > C/C++ >>

快速会用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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,