软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 编程语言 -> 【day0402】C++标准异常 -> 正文阅读

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


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;
}

输出:
[img][img]http://img.blog.csdn.net/20160402202845360?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
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;
}

输出:
[img]http://img.blog.csdn.net/20160402202856422?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
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;
}

输出:
[img][img]http://img.blog.csdn.net/20160402202900797?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
*此外,还可以自定义异常类型。使用模板类定义。
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-03 20:43:25  
编程语言 最新文章
Java面试题(1)
ReactiveX序列——RxSwift
C++STL之ACM相关知识大全
c++中vector向量几种情况的总结(向量指针,
SSH框架整合demo
JAX
UVA
curl备忘(1)
C#机房重构——万事开头难(二)
OJ刷题
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-23 3:42:33
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --