类嵌套处理异常

  1 /* 类嵌套处理异常 */
  2 
  3 #include<iostream>
  4 #include<cstring>
  5 
  6 using namespace std;
  7 
  8 
  9 class print3dbox
 10 {
 11 public:
 12     print3dbox(int a,int b,int c)
 13     {
 14         // a b c 在10-1000之间;
 15 
 16         if (a==0 || b==0 || c==0)
 17         {
 18             if(a==0 && b!=0 && c!=0)
 19             {
 20                 throw zero(1);
 21             }
 22             //throw zero();
 23         }
 24         else if(a>1000 || b>1000 || c>1000)
 25         {
 26             throw big();
 27         }
 28         else if ((a>0 && a<10) || (b>0 && b<10) || (c>0 && c<10))
 29         {
 30             throw small();
 31         }
 32         else if (a<0 || b<0 || c<0)
 33         {
 34             throw error();
 35         }
 36 
 37         x=a;
 38         y=b;
 39         z=c;        
 40     }
 41     
 42     // 四个类分别是嵌套类  处理围绕本类的异常
 43     // 嵌套类在类的内部 不需要类的声明
 44     class zero
 45     {
 46     public:
 47         int errorcode = 0;
 48         zero(int id):errorcode(id)
 49         {
 50         
 51         }
 52     };
 53 
 54     class big
 55     {
 56     };
 57 
 58 
 59     class small
 60     {
 61     };
 62 
 63     class error
 64     {
 65     };
 66 
 67 private:
 68     int x;
 69     int y;
 70     int z;
 71 };
 72 
 73 void main()
 74 {
 75     try
 76     {
 77         print3dbox box(11,12,13);
 78         cout << "创建成功" << endl;
 79     }
 80     catch (print3dbox::error e)
 81     {
 82         cout << typeid(e).name() << endl;
 83     }
 84     catch (print3dbox::small e)
 85     {
 86         cout << typeid(e).name() << endl;
 87     }
 88     catch (print3dbox::big e)
 89     {
 90         cout << typeid(e).name() << endl;
 91     }
 92     catch (print3dbox::zero e)
 93     {
 94         if(e.errorcode == 1)
 95         {
 96         
 97         }
 98         cout << typeid(e).name() << endl;
 99     }
100 
101     cin.get();
102 }

 

posted on 2015-06-16 11:20  Dragon-wuxl  阅读(244)  评论(0)    收藏  举报

导航