软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 编程语言 -> 【day0402】C++标准异常 -> 正文阅读
编程语言 最新文章
Java面试题(1)
ReactiveX序列——RxSwift
C++STL之ACM相关知识大全
c++中vector向量几种情况的总结(向量指针,
SSH框架整合demo
JAX
UVA
curl备忘(1)
C#机房重构——万事开头难(二)
OJ刷题

[编程语言]【day0402】C++标准异常

  2016-04-03 20:45:17

C++定义了很多的标准异常,常见的如下:
    //exception
    //runtime_error
    //range_error 
    //overflow_error
    //underflow_error
    //domain_error
    //invalid_argument 参数异常
    //length_error
    //out_of_range   范围异常
    //bad_alloc    内存分配异常
Demo1:内存分配异常
#include <iostream>

using namespace std;

class Ram{

public:
    Ram(){
        p = new int[1000000];
    }

private:
    int *p;
};

int main()
{
    Ram *ram;

    try{
        for (int i = 0; i < 10000; ++i){
            ram = new Ram();
            cout << i << "new successfully!\n";
        }
    }catch(bad_alloc err){
        cout << "new failed!\n";
    }

    return 0;
}

输出:

Demo2:参数异常
#include <iostream>
#include <string>
#include <bitset>
#include <stdexcept> //标准异常
//<exception>定义了与异常处理相关的类,声明和函数。
//<stdexcept>定义了一些标准的异常类。分为两大类:逻辑错误和运行时错误。其中运行时错误是程序员不能控制的。
//    逻辑错误都继承自logic_error

using namespace std;

/*参数异常*/

int main()
{
    int i = 0;

    try{
        i = 1;
        string str1("1010110101");
        bitset<10> b1(str1);
        cout << "bitset b1 is OK!\n";

        i = 2;
        //中间插入非数字字符
        string str2("1101X10101");
        bitset<10> b2(str2);
        cout << "bitset b2 is OK!\n";

    }catch(invalid_argument err){
        cout << "bitset error: b" << i << err.what() << endl;
    }

    return 0;
}

输出:

Demo3:范围异常
#include <iostream>
#include <stdexcept>

using namespace std;

/*范围异常*/

class Stu{

public:
    Stu(int age){
        if (0 > age || 140 < age){
            throw out_of_range("年龄超出范围(0~140)");
        }
        this->age = age;
    }

private:
    int age;
};

int main()
{
    int i = 0;

    try{
        i = 1;
        Stu tom(22);
        cout << "22岁的学生" << endl;

        i = 2;
        Stu mike(155);
        cout << "155岁的学生" << endl;

    }catch(out_of_range err){
        cout << "年龄错误:学生" << i <<": " << err.what() << endl;
    }

    return 0;
}

输出:

*此外,还可以自定义异常类型。使用模板类定义。
上一篇文章      下一篇文章      查看所有文章
2016-04-03 20:43:25  
360图书馆 论文大全 母婴/育儿 软件开发资料 网页快照 文字转语音 购物精选 软件 美食菜谱 新闻中心 电影下载 小游戏 Chinese Culture
生肖星座解梦 人民的名义 人民的名义在线看 三沣玩客 拍拍 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 天下美图
中国文化英文 多播视频 装修知识库
2017-4-23 21:59:43
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --