Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4523727
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-09-14 08:08:08



  1. #include<iostream> //包含头文件
  2. #include <stdlib.h>//exit

  3. using std::endl;
  4. using std::cout;
  5. using std::cerr;

  6. double fuc(double x, double y) //定义函数
  7. {
  8.     if(y==0)
  9.     {
  10.         throw y; //除数为0,抛出异常
  11.     }
  12.     return x/y; //否则返回两个数的商
  13. }

  14. int main()
  15. {
  16.     double res;
  17.     try //定义异常
  18.     {
  19.         res=fuc(2,3);
  20.         cout<<"The result of x/y is : "<<res<<endl;
  21.         res=fuc(4,0); //出现异常 //抛出 double 类型异常
  22.     }
  23.     catch(double) //捕获并处理异常
  24.     {
  25.         cerr<<"error of dividing zero.\n";
  26.         exit(1); //异常退出程序
  27.     }
  28.     exit(0);
  29. }
  1. ywx@ywx:~/yu/c++_4th/6$ ./exception
  2. The result of x/y is : 0.666667
  3. error of dividing zero.

  1. #include<iostream>
  2. #include <string>

  3. using namespace std;

  4. class Person
  5. {
  6. private:
  7.     int age;
  8.     string name;
  9. public:
  10.     void setAge(int);
  11.     void setName(string);
  12. };

  13. class Error
  14. {
  15. public:
  16.     virtual void show()=0;
  17. };

  18. class nameError:public Error
  19. {
  20. public:
  21.     void show()
  22.     {
  23.         cout<<"name is error"<<endl;
  24.     }
  25. };

  26. class ageError:public Error
  27. {
  28. public:
  29.     void show()
  30.     {
  31.         cout<<"age is error"<<endl;
  32.     }
  33. };

  34. void Person::setAge(int a)
  35. {
  36.     ageError ag;
  37.     if(a<0||a>100)
  38.         throw ag;
  39.     this->age=a;
  40. }
  41. void Person::setName(string str)
  42. {
  43.     nameError ne;
  44.     if(str=="exit")
  45.         throw ne;
  46.     this->name=str;
  47. }

  48. int main(void)
  49. {
  50.     Person p;
  51.     try
  52.     {
  53.         p.setAge(0);
  54.         p.setName("exit");
  55.     }
  56.     catch(Error &er)
  57.     {
  58.         er.show();
  59.     }

  60.     cout<<"hello world"<<endl;
  61.     return 0;
  62. }

  1. ywx@ywx:~/yu/c++_4th/6$ ./exception
  2. name is error
  3. hello world


阅读(1214) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~