cc39a_demo_标准异常类c++例子

//39CppPrimer_标准异常类c++/例子1
//标准库异常类
//exception
//runtime_error
//rang_error
//overflow_error
//underflow_error
//logic_error
//domain_error
//invalid_argument
//length_error
//out_of_range


//bad_alloc ,new创建时的异常 #include <new>

//39CppPrimer_标准异常类c++/例子1
//标准库异常类
//exception
//runtime_error
//rang_error
//overflow_error
//underflow_error
//logic_error
//domain_error
//invalid_argument
//length_error
//out_of_range
//bad_alloc ,new创建时的异常 #include <new>

#include <iostream>

using namespace std;
class Dog
{
public:
	Dog()
	{
		parr = new int[1000000];//创建动态数组,4M
	}
private:
	int *parr;
};

int main()
{
	//printf("39CppPrimer_标准异常-printf\n");
	//cout << "39CppPrimer_标准异常 test" << endl;
	Dog *pDog;
	try
	{
		for (int i = 1; i < 1000; i++)//40G内存
	 {
		 pDog = new Dog();
		 cout << i << ":new Dog 成功" << endl;
	  } 
	}
	catch (bad_alloc err)  //bad_alloc ,new创建时的异常 #include <new>
	{
		cout << "new Dog失败:"<<err.what() << endl;
	}
	

	getchar();
	return 0;
}

#include <stdexcept>//invalid_argument

//如果不是0和1,就会异常


#include <iostream>
#include <bitset> //容器
#include <string>//使用字符串输出类型
#include <stdexcept>//invalid_argument

using namespace std; //必须导入名称空间,不然string就显示未定义标识符

int main()
{
	try
	{
		string s("1010110010");//如果不是0和1,就会异常
		//bitset专门处理二进制
		bitset<10> b(s);//b里面放了10个二进制数,默认0,s就是共10个二进制数,放进b里面
		cout << "bitset is ok" << endl;
	}
	catch (invalid_argument err)
	{
		cout << "bitset error: " <<err.what()<< endl;
	}
	
	return 0;
}

#include <stdexcept>//out_of_range 异常类

#include <iostream>
#include <stdexcept>//out_of_range 异常类

using namespace std;

class 学生
{
public:
	学生(int 年龄)
	{
		if (年龄 < 0 || 年龄>150)
			throw out_of_range("年龄不能<0或>150");
	}
private:
	int m_年龄;
};

int main()
{
	try
	{
		学生 张飞(200);
	}
	catch (out_of_range err)
	{
		cout << "学生出错: " << err.what() << endl;//what()is throw出来的字符串
	}
	return 0;
}
发布了356 篇原创文章 · 获赞 186 · 访问量 89万+

猜你喜欢

转载自blog.csdn.net/txwtech/article/details/104070364