卓航论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 153|回复: 3
打印 上一主题 下一主题

C++的异常类(exception classes) 详解

[复制链接]
[至尊红钻5级]发帖数量≥8000篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [至尊紫钻4级]金币≥20000个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 论坛元老
 UID:  7   [未点亮普号显示]钻石不足3个
 阁 分: 36567
 阁 望: 0
 阁 献: 0
 活 跃: 0
 发 贴: 12405 (0)
 阁 币: 24162  
性 别: I'm 火星人!
阅读权限: 90
在线时长: 0 小时
注册时间: 2016-10-16
最后登录: 2016-10-18
go
楼主
发表于 2016-10-17 16:21:59 |只看该作者 |倒序浏览
本帖发表于 2016-10-17 16:21:59...阅读 154 人...加油,亲爱的楼主:[db:作者]
异常类(exception classes)包含4种基类,bad_cast, bad_alloc,runtime_error, logic_error;
runtime_error: 错误只有当程序运行时, 才能检测出来;
logic_error: 应用程序检测出的逻辑错误.
其中bad_cast, bad_alloc使用默认构造器, runtime_error, logic_error, 必须使用string(C-style或stl)进行初始化;
用户定义的类也可以继承(inherit)自异常类, 并初始化相应的参数;
代码如下:
/*
* cppprimer.cpp
*
*  Created on: 2013.11.28
*      Author: Caroline
*/
      
/*eclipse cdt, gcc 4.8.1*/
      
/* setlocale example */
#include [i]  
#include   
#include   
      
using namespace std;  
      
class out_of_stock : public std::runtime_error  
{  
public:  
    //初始化基类的runtime_error  
    explicit out_of_stock(const std::string &s) : std::runtime_error(s) {}  
};  
      
class id_mismatch : public std::logic_error  
{  
public:  
    explicit id_mismatch(const std::string &s) : std::logic_error(s) {}  
    id_mismatch(const std::string &s, const std::string &lhs, const std::string &rhs) :  
        std::logic_error(s), left(lhs), right(rhs) {}  
    const std::string left, right;  
};  
      
struct My_food  
{  
    My_food(const std::string fi, const int fn) : food_id(fi), food_num(fn) {}  
    My_food& operator+=(const My_food& rhs);  
    std::string food_id;  
    int food_num;  
};  
      
My_food& My_food::operator+=(const My_food& rhs)  
{  
    if(this->food_id != rhs.food_id)  
        throw id_mismatch("wrong id", this->food_id, rhs.food_id);  
    this->food_num += rhs.food_num;  
    return *this;  
}  
      
int main (void)  
{  
    My_food M1("Apple", 3), M2("Pear", 2), M3("Apple", 2);  
    try{  
        M1 += M3;  
        std::cout
输出:
Apple:5  
wrong id: left id(Apple) right id(Pear)
作者:csdn博客 Spike_King
更多精彩内容:http://www.bianceng.cn/Programming/cplus/
分享到: QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏0 支持支持0 反对反对0

使用道具 举报

[至尊红钻3级]发帖数量≥1000篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 金牌会员
 UID:  5   [未点亮普号显示]钻石不足3个
 阁 分: 1295
 阁 望: 0
 阁 献: 0
 活 跃: 0
 发 贴: 1242 (0)
 阁 币: 53  
性 别: I'm 火星人!
阅读权限: 70
在线时长: 0 小时
注册时间: 2016-10-15
最后登录: 2016-10-18
沙发
发表于 2016-10-17 17:17:06 |只看该作者
本回复帖发表于 2016-10-17 17:17:06,感谢方丹果舞对本帖的认真回复,你的回复是对楼主莫大的鼓舞
路过,学习下

使用道具 举报

[至尊红钻2级]发帖数量≥100篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 注册会员
 UID:  171   [未点亮普号显示]钻石不足3个
 阁 分: 153
 阁 望: 5
 阁 献: 1
 活 跃: 0
 发 贴: 124 (0)
 阁 币: 18  
性 别: I'm Boy
阅读权限: 20
在线时长: 4 小时
注册时间: 2011-1-5
最后登录: 2016-10-21
板凳
发表于 2016-10-19 10:49:46 |只看该作者
本回复帖发表于 2016-10-19 10:49:46,感谢叶归尘bacal对本帖的认真回复,你的回复是对楼主莫大的鼓舞
学习了,不错,讲的太有道理了

使用道具 举报

[至尊红钻2级]发帖数量≥100篇 [未点亮至尊黄钻]威望不足10点 [未点亮至尊蓝钻]在线时间不足10小时 [未点亮至尊绿钻]贡献度不足10点 [未点亮至尊紫钻]金币不足100个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 中级会员
 UID:  14   [未点亮普号显示]钻石不足3个
 阁 分: 282
 阁 望: 2
 阁 献: 8
 活 跃: 0
 发 贴: 261 (0)
 阁 币: 9  
性 别: I'm 火星人!
阅读权限: 30
在线时长: 1 小时
注册时间: 2011-1-6
最后登录: 2016-10-21
地板
发表于 2016-10-21 00:21:25 |只看该作者
本回复帖发表于 2016-10-21 00:21:25,感谢qszheng1对本帖的认真回复,你的回复是对楼主莫大的鼓舞
这是什么东东啊

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、每个贴内连续回复请勿多余3贴,每个版面回复请勿多余10贴!
4、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!

手机版| 百度搜索:vkee.pw

2012-2015 卓航旗下 GMT+8, 2024-5-23 22:39 , Processed in 0.552716 second(s), 30 queries . Powered by Discuz! X3.2  

禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.如遇版权问题,请及时联系站长(QQ:5213513)

今天是: | 本站已经安全运行: //这个地方可以改颜色

快速回复 返回顶部 返回列表