注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

28-5从exception 派生出自己定义的异常类  

2014-04-30 23:45:14|  分类: c++的异常的处理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

其中的一个重要函数为what(),它返回一个表示异常的字符串指针。下面我们从exception类派生一个自己的类:
  
  #include
  #include
  using namespace std;
  
  class myexception:public exception
  {
   public:
   myexception():exception("一个重载exception的例子")
   {}
  };
  
  int main()
  {
   try
   {
    throw myexception();
   }
   catch (exception &r) //捕获异常
   {
    cout << "捕获到异常:" << r.what() << endl;
   }
   return 0;
  }
  
    程序运行,输出:
  
    捕获到异常:一个重载exception的例子
  
    一般的,我们直接以基类捕获异常,例如,本例中使用了
  
  catch (exception &r)
  
    然后根据基类的多态性进行处理,这是因为基类中的what函数是虚函数。

#include <exception>
#include <iostream>
#include <string>
using namespace std;

class CustomException: public std::exception
{
string Reason;
public:
// constructor, needs reason
CustomException(const char* why):Reason(why) {}/*构造函数*/

// redefining virtual function to return 'Reason'
virtual const char* what() const throw()
{
return Reason.c_str();
}
};

double Divide(double Dividend, double Divisor)
{
if(Divisor == 0)
throw CustomException("CustomException: Dividing by 0 is a crime");

return (Dividend / Divisor);
}

int main()
{
cout << "Enter dividend: ";
double Dividend = 0;
cin >> Dividend;
cout << "Enter divisor: ";
double Divisor = 0;
cin >> Divisor;
try
{
cout << "Result of division is: " << Divide(Dividend, Divisor);
}
catch(exception& exp)// catch CustomException, bad_alloc, etc
{
cout << exp.what() << endl;
cout << "Sorry, can't continue!" << endl;
}

return 0;
}

28-5从exception  派生出自己定义的异常类 - 983433479 - 把握改变契机  告别迷茫
 
28-5从exception  派生出自己定义的异常类 - 983433479 - 把握改变契机  告别迷茫
 
28-5从exception  派生出自己定义的异常类 - 983433479 - 把握改变契机  告别迷茫
 
28-5从exception  派生出自己定义的异常类 - 983433479 - 把握改变契机  告别迷茫
 
28-5从exception  派生出自己定义的异常类 - 983433479 - 把握改变契机  告别迷茫
 28-5从exception  派生出自己定义的异常类 - 983433479 - 把握改变契机  告别迷茫
  评论这张
 
阅读(1)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017