类嵌套处理异常
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) 收藏 举报
浙公网安备 33010602011771号