【C/C++学院】0831-类与对象的异常/面试100题1-100

简介: <p></p> <h2><span style="font-family:宋体; font-size:16pt">类与对象的异常</span><span style="font-family:宋体; font-size:16pt"></span></h2> <p></p> <p>Cpp<span style="font-family:宋体">异常</span></p> <pre

类与对象的异常

Cpp异常

#include <iostream>
#include <string.h>

using namespace std;

//标识错误的类型
class wrong  
{
};

int intdiv(int a, int b)
{
	try
	{	  
		if (b==0)
		{
			throw 10;//可以是任何对象  wrong();
		}
		int c = a / b;
		return c;
	}
	catch (int data )//类型名
	{		
		cout << "除法异常已经处理";
		return -1;
	}
}

int intdivA(int a, int b)
{
	return a / b;
}

void main()
{
	int x, y;
	cin >> x >> y;
	try
	{
		if (y==0)
		{
			throw "被除数为0";
		}
		else if (x==0)
		{
			throw "除数为0";
		}
	}
	catch (const char * s)
	{
		if (strcmp(s,"被除数为0")==0)
		{
			cout << "被除数为0异常,请重新输入";
			cin >> x >> y;
		}
		else  if (strcmp(s, "除数为0") == 0)
		{
			cout << "除数为0异常,请重新输入";
			cin >> x >> y;
		}
	}

	std::cout << intdiv(x, y);
	cin.get();
	cin.get();
	cin.get();
}

类的异常

#include<iostream>
using namespace std;

class wrong
{
};

class wrongA
{
};

class Array
{
public:
	Array(int num)
	{
		n = num;
		
		if (num<=0)
		{
			throw  wrong();
		}
		p = new int[num];//正确代码在throw之后,不会被执行,
		for (int i = 0; i < num;i++)
		{
			p[i] = 0;
		}
	}

	int & operator[](int num)
	{
		if (num < 0 || num>= n)
		{
			throw wrongA();
		}
		return p[num];
	}
protected:
private:
	int *p;
	int n;
};

void main()
{
	try
	{
		Array myarrar(2);
		myarrar[-1];
	}
	catch (wrongA  e)
	{		
		cout << "下标越界";
	}
	catch (wrong  e)
	{
		cout << "程序发生异常,数组大小必须大于等于1";
	}

	cin.get();
}

void mainA()
{
	int a[3] = { 1, 2, 3 };
//	printf("%d", 2[a]);//*(2+a)
//	printf("%d", a[9886655]);
	getchar();
}


#include<iostream>
#include <string>

using namespace std;

class box   //正方体
{
public:
	box(int data) 
	{
		cout << "开始构造";
		if (data ==0)
		{
			zero z1;
			z1.errorcode = 212;
			throw z1;
		} 
		else if ( data >0 && data<100)
		{
			throw small();
		}
		else  if (data>10000)
		{
			throw big();
		}
		else if (data>100 && data<10000)
		{
			a = data;
		}
		else
		{
			throw wrong{};
		}		
	}
	
    int  gettiji()
	{
		 return  a*a*a;
	}

	class zero
	{
	public:
		int errorcode;
	
	}; 
	class wrong{};
	class big{};
	class small{};
private:
	int a;//变长
};

void main()
{
	try
	{
		box newbox(0);
	}
	catch (box::zero w)
	{
	    if (w.errorcode==22)
	    {
			cout << "22号错误正方体长度不可以为0";
	    } 
	    else
	    {
			cout << "fei22号错误正方体长度不可以为0";
	    }		
	}
	catch (box::wrong)
	{
		cout << "正方体长度异常";
	}
	catch (box::big)
	{
		cout << "正方体长度太长";
	}
	catch (box::small)
	{
		cout << "正方体长度taiduan";
	}

	cin.get();
}

面试1001-100

单独整理成文档







目录
相关文章
存储 编译器 Linux
18 0
|
2天前
|
编译器 C++
标准库中的string类(上)——“C++”
标准库中的string类(上)——“C++”
|
2天前
|
编译器 C++
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(中)——“C++”
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(中)——“C++”
|
2天前
|
存储 编译器 C++
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(上)——“C++”
自从学了C++之后,小雅兰就有对象了!!!(类与对象)(上)——“C++”
|
3天前
|
C++
【C++成长记】C++入门 | 类和对象(下) |Static成员、 友元
【C++成长记】C++入门 | 类和对象(下) |Static成员、 友元
|
21天前
|
Java 程序员
java线程池讲解面试
java线程池讲解面试
39 1
|
2月前
|
存储 关系型数据库 MySQL
2024年Java秋招面试必看的 | MySQL调优面试题
随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能、高并发和高可用的系统。 今天小编首先会跟大家分享一下MySQL 索引中的各种概念,然后介绍优化索引的若干条规则,最后利用这些规则,针对面试中常考的知识点,做详细的实例分析。
238 0
2024年Java秋招面试必看的 | MySQL调优面试题
|
2月前
|
存储 算法 Java
铁子,你还记得这些吗----Java基础【拓展面试常问题型】
铁子,你还记得这些吗----Java基础【拓展面试常问题型】
45 1
|
2月前
|
NoSQL Java 关系型数据库
凭借Java开发进阶面试秘籍(核心版)逆流而上
最近参加了面试或者身边有朋友在面试的兄弟有没有发现,现在的面试不仅会问八股文,还会考察框架、项目实战、算法数据结构等等,需要准备的越来越多。 其实面试的时候,并不是要求你所有的知识点都会,而是关键的问题答到点子上!这份《Java 开发进阶面试秘籍(核心版)》由 P8 面试官整体把控,目前已经更新了 30 万字! 资料中涵盖了一线大厂、中小厂面试真题,毕竟真题都是技术领域最经典的基础知识和经验沉淀的汇总,非常有必要学习掌握!双重 buff 叠加,offer 接到手软~ 点击此处取,这可能是你到目前为止领取的最具含金量的一份资料! 整套资料涵盖:Spring、Spring
|
2月前
|
存储 缓存 Java
面试官:什么是Java内存模型?
面试官:什么是Java内存模型?
108 0
面试官:什么是Java内存模型?

热门文章

最新文章